【发布时间】:2016-11-14 07:04:13
【问题描述】:
在我的 ASP MVC 项目中,我实现了 OWIN CookieAuthentication。除了未经授权的请求外,一切都运行良好。 例如,考虑流程:
- 用户登录
- 用户点击了用户无权访问的端点。
通过以下方式限制:
[Authorize(Roles = "SomeRoleUserDontHaAssigned")]
public ActionResult SomeAction()...
当这种情况发生时,用户会被重定向到 Account/Login 路由(这没问题),但他并没有被注销(这是我所期望的)。
这是预期的行为,因此我应该实现自己的 AuthorizeAttribute,我应该在其中手动删除 cookie(或调用 Account/SignOut)?还是我错过了什么?
【问题讨论】:
-
你为什么会期待这样的事情?作为一个用户,如果我每次点击我无权访问的资源时都必须重新登录,我会有点生气。您可以通过自定义 AuthorizeAttribute 来做到这一点,但您应该这样做吗?
-
我明白你的意思。我应该详细说明一下:从用户体验的角度来看,我完全同意你的看法。我真正想说的是:如果它已经重定向到登录页面,那么(并且只有那时)我希望首先注销用户,因为登录已经登录的用户有什么意义?这真的很奇怪吗?另一方面,完全正确的解决方案当然是重定向到一些自定义的“拒绝访问”页面。顺便说一句,这是在哪里设置的?
-
我不能完全理解你的问题,如果用户点击受限页面,你如何期望他被注销?记录用户的唯一方法是当 cookie 消失或您通过身份验证管理器 (authenticationManager.SignOut) 注销用户时
-
嗯,我也不希望他被重定向到帐户/登录,首先。但是自从他们选择这样做以来,我的问题是关于退出的预期想法是什么-这也是他们想要的,我错过了还是他们就这样离开了?从书上看,我的期望是返回 403 禁止状态代码,仅此而已。然后我最终会拦截 403 并提供自定义未经授权的错误页面。但是这种重定向显然会进入该过程。
标签: asp.net-mvc owin