asp.net-web-api2 – 如何在ActionFilter之后,在Action之前在Api
发布时间:2020-12-16 09:56:00 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试实现IAuthenticationFilter(Web Api 2风格,而不是MVC风格),我正在努力执行代码的顺序.我希望在任何基于控制器的东西之前运行身份验证过滤器,这样我就可以设置适当的主体,然后在某种基础ApiController中从我的DbContext加载相关的用户数据. 这是我
我正在尝试实现IAuthenticationFilter(Web Api 2风格,而不是MVC风格),我正在努力执行代码的顺序.我希望在任何基于控制器的东西之前运行身份验证过滤器,这样我就可以设置适当的主体,然后在某种基础ApiController中从我的DbContext加载相关的用户数据.
这是我追求的流程: AuthenticationFilter ==> BaseController ==> Controller/Action > AuthenticationFilter: – 测试授权标头,如果一切正常,则设置主体. 我不知道将代码放在BaseController中的哪个位置,以便在验证过滤器之后但在解析的控制器/操作之前执行它. 题 所以我的问题是双重的:我是否以错误的方式解决这个问题?如果没有,我应该如何执行第2步? 解决方法
这就是我最终做的事情.在我的BaseController中,我创建了一个名为LoggedInUser的受保护属性,并创建了一个特殊的getter:
private User _loggedInUser; protected User LoggedInUser { get { if (_loggedInUser != null) return _loggedInUser; var identity = RequestContext.Principal.Identity; var userId = identity.GetUserId(); _loggedInUser = MyDbContext.Users.Find(userId); return _loggedInUser; } } 这允许我将代码保存在一个位置BaseController中,同时仍然允许我推迟获取用户的尝试,直到进行身份验证. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – Visual Studio“添加为链接”调试时不工作
- ASP.NET Core 2.0 支付宝扫码支付的实现代码
- ASP.net vNext和Entity Framework 6
- asp.net-mvc-3 – 如何使用MVC使用多个表单显示ValidationS
- asp.net-mvc – 将DropDownList绑定到MVC视图中
- oauth – 如何为AspNet.Security.OpenIdConnect.Server解决
- asp.net – ASP .NET MVC中的TinyMCE Spellchecker
- asp.net-mvc – 从nopCommerce插件扩展Razor Partial View
- asp.net-mvc – Angular ng-include cshtml页面
- asp.net – 最后修改标头在MVC
推荐文章
站长推荐
- ASP.NET Core应用的错误处理[1]:三种呈现错误页
- asp.net-mvc – 我可以(并且应该)强制NHibernate
- asp.net – 在RedirectToAction调用中传播QueryS
- asp.net-mvc-3 – ASP.NET MVC 3:当BeginForm在
- asp.net – 我可以在URL中使用逗号吗?
- asp.net – 随机字符串生成器在多个调用中创建相
- asp.net-mvc – MVC5基于声明的身份验证 – 适用
- asp.net-mvc – 什么时候应该在asp.net mvc中使用
- asp经典 – ASP检查请求方法
- asp.net – 启用了slidingExpiration的FormsAuth
热点阅读