我们假设我想使用这样的路由:
{sessionid}/{controller}/{action}/{id}
添加路由很容易,但现在我不清楚如何让AuthorizeAttribute
使用与我的会话令牌关联的用户。我在ILSpy中查看了它的来源,它似乎依赖于HttpContext
得到IPrincipal
,而这就是路径变冷的地方。
它在哪里得到IPrincipal
的实例?
最糟糕的情况我想我可以编写一个自定义FilterAttribute
和一个实现IPrincipal
的自定义用户类。全局连接以从路由数据中获取sessionid
,从数据库中查找我的用户,然后将我的自定义IPrincipal
实例提供给HttpContext.User
。
这看起来有点低,也绕过整个MembershipProvider
业务。
我是在正确的轨道上还是有更简单的方法来解决这个问题?