使用Fluent Security,我使用DenyAnonymousAccess,DenyAuthenticationAccess和RequireRole配置了网站访问权限。但是,由于HandleSecurityAttribute
不是授权过滤器,因此处理DenyAnonymousAccessPolicyViolation
的所有逻辑仅在授权过滤后执行,例如ValidateAntiForgeryToken
。
这意味着如果当前用户的身份验证票证超时,则使用ValidateAntiForgeryToken
修饰的任何操作都将抛出异常,因为没有为匿名用户创建令牌。
那么有办法解决这个问题吗?我目前正在寻找两种解决方案:
HandleSecurityAttribute
安全性。 Authorize
文件管理器处理身份验证,并将角色/其他访问策略保留给FluentSecurity。更新
我在github上的一个演示中检查过,这个用户名和密码是dev1和devdev。我将超时表单身份验证设置为1分钟。因此,如果您登录并等待一分钟,然后单击注销,您将获得不为匿名用户创建令牌。在普通的MVC中,这不会发生,因为[Authorize]在[ValidateAntiForgeryToken]之前运行,它将用户重定向回登录屏幕。
答案 0 :(得分:1)
我没有遇到任何问题。确保将 HandleSecurityAttribute 放在过滤器列表中!
GlobalFilters.Filters.Add(new HandleSecurityAttribute(), 0);