【发布时间】:2016-05-18 02:18:44
【问题描述】:
我正在尝试实现 IAuthenticationFilter(Web Api 2 风格,不是 MVC 风格)并且我正在努力解决代码的执行顺序。我本来希望身份验证过滤器在任何基于控制器的东西之前运行,这样我就可以设置适当的主体,然后在某种基础 ApiController 中从我的 DbContext 加载相关的用户数据。
这是我追求的流程:
AuthenticationFilter ==> BaseController ==> Controller/Action
AuthenticationFilter:- 测试授权标头并设置主体,如果一切正常。
BaseController:- 使用主体在数据库中查找完整的用户记录并将其分配给
protected属性。控制器/动作:- 正常完成动作,可以访问 BaseController 中设置的用户记录。
我不确定将代码放在 BaseController 中的哪个位置以便让它在身份验证过滤器之后执行,但在解析控制器/操作之前之前。
问题
所以我的问题有两个:我是不是走错了路?如果没有,我应该如何执行第 2 步?
【问题讨论】:
-
使用
AuthenticationFilter中设置的主体正常获取操作中的完整用户记录。您可以在一个受保护的方法中检索它,该方法在调用时会提前调用。 -
您能否展示一些代码来举例说明
BaseController以及在Controller/action 中的预期用途 -
@Nkosi 谢谢,那肯定行得通,但我希望避免在每一个动作中都这样做。
标签: asp.net-web-api2