【发布时间】:2013-03-19 22:10:15
【问题描述】:
使用 Fluent Security,我已经使用 DenyAnonymousAccess、DenyAuthenticationAccess 和 RequireRole 配置了网站访问。但是,由于HandleSecurityAttribute不是授权过滤器,所有处理DenyAnonymousAccessPolicyViolation的逻辑都只能在授权过滤器之后执行,例如ValidateAntiForgeryToken。
这意味着如果当前用户的身份验证票超时,任何带有ValidateAntiForgeryToken 修饰的操作都会抛出异常,因为令牌不是为匿名用户创建的。
那么有没有办法解决这个问题?我目前正在研究两种解决方案:
- 创建我自己的授权过滤器来执行
HandleSecurityAttribute安全所做的完全相同的事情。 - 使用全局
Authorize文件管理器处理身份验证并将角色/其他访问策略留给 FluentSecurity。
更新:
我在 github 上查看了一个演示,它的用户名和密码是 dev1 和 devdev。我将超时表单身份验证设置为 1 分钟。因此,如果您登录并等待一分钟,然后单击注销,您将获得未为匿名用户创建的令牌。在普通的 MVC 中,这不会发生,因为 [Authorize] 在 [ValidateAntiForgeryToken] 之前运行,这会将用户重定向回登录屏幕。
【问题讨论】:
标签: fluent-security