访问其他spring安全过滤器的数据

时间:2014-06-01 23:05:52

标签: java spring spring-security

是否可以访问spring security中先前过滤器授予的凭据和权限?

背景:

我正在使用Spring和Spring Security开发基于令牌的身份验证的Java RESTful API。 但是,某些呼叫可以使用用户密码进行额外保护。

目前我有自己的GenericFilterBean实现,它从HTTP-Header中过滤出令牌并检查它是否存在于数据库中。根据与此令牌关联的权限,用户被授予不同的角色。权限存储在我的数据库中,可以使用令牌进行检索。

API中有多个调用需要使用用户密码进行额外身份验证。

我想创建第二个自定义过滤器,从标头中提取密码。 这种方法的问题在于我不想仅通过他的密码来识别用户,而是通过从第一个过滤器中的令牌中提取的用户来识别用户。

1 个答案:

答案 0 :(得分:0)

SecurityContextHolder始终保留当前的身份验证对象。您可以通过调用SecurityContextHolder.getContext().getAuthentication()来检索身份验证过滤器放置在那里的身份验证,该身份验证返回一个包含方法getAuthorities()getCredentials()getPrincipal()的对象。