是否可以访问spring security中先前过滤器授予的凭据和权限?
背景:
我正在使用Spring和Spring Security开发基于令牌的身份验证的Java RESTful API。 但是,某些呼叫可以使用用户密码进行额外保护。
目前我有自己的GenericFilterBean实现,它从HTTP-Header中过滤出令牌并检查它是否存在于数据库中。根据与此令牌关联的权限,用户被授予不同的角色。权限存储在我的数据库中,可以使用令牌进行检索。
API中有多个调用需要使用用户密码进行额外身份验证。
我想创建第二个自定义过滤器,从标头中提取密码。 这种方法的问题在于我不想仅通过他的密码来识别用户,而是通过从第一个过滤器中的令牌中提取的用户来识别用户。
答案 0 :(得分:0)
SecurityContextHolder
始终保留当前的身份验证对象。您可以通过调用SecurityContextHolder.getContext().getAuthentication()
来检索身份验证过滤器放置在那里的身份验证,该身份验证返回一个包含方法getAuthorities()
,getCredentials()
和getPrincipal()
的对象。