针对授权过滤器的执行顺序

时间:2013-03-19 22:10:15

标签: fluent-security

使用Fluent Security,我使用DenyAnonymousAccess,DenyAuthenticationAccess和RequireRole配置了网站访问权限。但是,由于HandleSecurityAttribute不是授权过滤器,因此处理DenyAnonymousAccessPolicyViolation的所有逻辑仅在授权过滤后执行,例如ValidateAntiForgeryToken

这意味着如果当前用户的身份验证票证超时,则使用ValidateAntiForgeryToken修饰的任何操作都将抛出异常,因为没有为匿名用户创建令牌。

那么有办法解决这个问题吗?我目前正在寻找两种解决方案:

  1. 创建我自己的授权过滤器,以完全执行HandleSecurityAttribute安全性。
  2. 使用全局Authorize文件管理器处理身份验证,并将角色/其他访问策略保留给FluentSecurity。
  3. 更新

    我在github上的一个演示中检查过,这个用户名和密码是dev1和devdev。我将超时表单身份验证设置为1分钟。因此,如果您登录并等待一分钟,然后单击注销,您将获得不为匿名用户创建令牌。在普通的MVC中,这不会发生,因为[Authorize]在[ValidateAntiForgeryToken]之前运行,它将用户重定向回登录屏幕。

1 个答案:

答案 0 :(得分:1)

我没有遇到任何问题。确保将 HandleSecurityAttribute 放在过滤器列表中!

GlobalFilters.Filters.Add(new HandleSecurityAttribute(), 0);