asp.net-core – AuthorizationHandler和数据库依赖注入
发布时间:2020-12-16 06:39:51 所属栏目:asp.Net 来源:网络整理
导读:我们基于身份验证开发了一个多租户应用程序.每个用户获得存储在数据库中的令牌会话,以告知用户是否仍然连接(具有到期时间).我将令牌(以及有关用户公司的其他信息)存储在用户声明中.在Identity检测到用户仍然连接(或不连接)之后,我需要检查用户令牌在我们的数
我们基于身份验证开发了一个多租户应用程序.每个用户获得存储在数据库中的令牌会话,以告知用户是否仍然连接(具有到期时间).我将令牌(以及有关用户公司的其他信息)存储在用户声明中.在Identity检测到用户仍然连接(或不连接)之后,我需要检查用户令牌在我们的数据库中是否仍然有效(但只有在他连接的情况下),所以我实现了AuthorizationHandler.
public TokenValidHandler(MyDatabaseService service) { // No information about the user connection string } protected override async void Handle(AuthorizationContext context,TokenValidRequirement requirement) { // Check the token in database } 我像这样注册我的处理程序: services.AddAuthorization(options => { options.AddPolicy("TokenValid",policy => policy.Requirements.Add(new TokenValidRequirement())); }); services.AddSingleton<IAuthorizationHandler,TokenValidHandler>(); 因为我们有一个多租户应用程序,当用户退出应用程序并重新打开该站点时,他的连接字符串将丢失(我们不想保留数据库字符串),因此我使用存储在Claim中的信息来恢复数据库访问.如果身份验证已过期,则声明中没有可用的信息,因此我无法访问我的数据库. 正如我所看到的,即使用户没有连接,TokenValidHandler也会被实例化,这是正常的吗?因为在他没有的情况下,我想对我的数据库服务使用依赖注入,我不能,因为有关用户数据库访问的信息不在这里:身份没有及时检测到用户身份验证已过期.关于那个的任何想法? 解决方法
尝试将处理程序注册为作用域,您将获得每个请求的新实例,这可能是您想要的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-2 – ASP.NET-MVC2预览1:有任何重大变化吗?
- asp.net-mvc-4 – Html.RenderAction使用Post而不是Get
- asp.net – 页面可以有多个ScriptManagers吗?如果是,则需要
- 将自定义属性添加到asp.NET RadioButton控件
- 是否有可能在asp经典和asp.net之间共享会话状态
- 详解Asp.net web.config customErrors 如何设置
- asp.net-mvc – 视图是否应该依赖于它的控制器? (ASP.NET
- asp.net – 配置示例
- asp.net – 什么是Silverlight,以及哪些类型的开发人员知道
- asp.net-mvc-3 – 实体框架乐观并发异常未发生
推荐文章
站长推荐
热点阅读