Grails 3和Spring Security - 在过滤器中验证用户身份

时间:2017-04-03 15:16:55

标签: authentication grails spring-security filter

我正在开发一个由Spring Security插件驱动的Grails 3网络应用程序,该插件已经大量使用@Secured注释来根据单个登录用户的权限保护控制器和操作。
登录目前通过通常的用户名/密码对进行管理。

现在出现了一项新要求,涉及一个自定义请求标头,其值为一种“授权令牌”:

  • 此令牌标识一组用户(让我们称之为团队
  • 如果此令牌被识别为有效,与DB匹配,则整个应用程序应该表现为预定义用户(让我们称之为 John 团队的一部分)登录了。从这个意义上讲,它应该充当预认证。该用户将拥有自己的角色,因此应用程序将做出相应的响应,就像 John 已使用自己的用户名/密码登录一样。
  • 如果无法识别令牌,则必须返回401状态。
  • 如果未传递令牌,则应用程序必须具有其当前行为,应将令牌管理视为可选,不得影响当前的实现。

我考虑过定义一个自定义过滤器(我也看过这个post,然而它有不同的要求),但我甚至无法确定:

  • 此任务的可行性
  • 过滤器是否是最好的方法(但我想因为拦截器被触发太晚了,我需要在Spring Security发挥作用之前评估一些额外的逻辑)
  • 可能是扩展的最佳过滤器

所以欢迎任何建议!提前致谢

1 个答案:

答案 0 :(得分:0)

不是这方面的专家,但我会实现自定义UserDetailsS​​ervice并根据令牌条件设置权限。您也可以在AuthenticationSuccessListener中执行此操作。