asp.net-core - 没有http上下文的asp net core auth。(智威汤逊)
问题描述
我对 .net 核心中的身份验证有疑问。我需要你的建议。我有处理程序(命令或查询),可以从 web api 控制器调用,也可以从 Kafka 消费者调用。
由于可以从 Web API 控制器或 Kafka 消费者调用处理程序,因此我想将身份验证逻辑作为装饰器集中到处理程序。
例子。
public class CreateUserCommand : ICommand
{
public string Email {get; set;}
public string Password {get; set;}
}
public class CreateUserCommandHandler : ICommandHandler< CreateUserCommand >
{
public void Handle(CreateUserCommand command)
{
// some business logic
}
}
public class AuthDecoator : ICommandHandler<TCommand>
{
public AuthDecoator (ICommandHandler<TCommand> decoratee)
public void Handle(CreateUserCommand command)
{
// handle auth, if valid
decoratee.Handle(command);
}
}
// From Web API
public class UsersController : ControllerBase
{
public IActioneResult Register(string email, string password)
{
createUserCommandHandler.Handler(new CreateUserCommand { Email = email,
Password = password })
}
}
public class RegisterUser
{
public string Email {get; set;}
public string Password {get; set;}
}
// From Consumer
public class RegisterConsumer : ConsumerBase
{
public ConsumeResult Consume(RegisterUser)
{
createUserCommandHandler.Handler(new CreateUserCommand { Email = email,
Password = password })
}
}
通过这种方式,我将有机会保护所有类型的调用,例如 Kafka 消费、http 或批处理作业
所以我的问题是
- 将身份验证作为处理程序的装饰器是个好主意吗?
- 如果是这样,我如何在没有 http 上下文的情况下编写自己的“AuthenticationHandler”?我的功能代码不应该知道传输协议,例如 http/s
我检查了诸如“AuthenticationHandler”之类的选项,但都取决于 http 上下文。
解决方案
推荐阅读
- excel - 更改以数组值开头的换行符的字体大小?
- python - 如何根据python中的条件旋转和创建列
- python - 如何使用 python-telegram-bot 获取用户类型
- adobe - 增量数据提取 Adobe AEM 查询构建器
- java - 如何在导航抽屉中添加活动
- assembly - MASM x86 , ret 返回错误的地址
- next.js - 在 Next.js Hot Reload 发生之前是否有一个钩子?
- python - 使用 python (matplotlib) 复制 Stata 的 psgraph 的输出
- c# - 根据时间戳组织文件列表
- python - 如何使用 Python Selenium 在下拉菜单中激活复选框