我想添加来宾功能:这意味着访客是与用户一样的对象,但不会保留,并且ROLE_GUEST
代替ROLE_USER
。我想在会话中存储一个guestID,所以当客人做某事时,我可以检索客人并以客人的名义采取行动。如果我想保留Stateless Servlet
,我将如何添加此信息。
我对注册用户的当前登录信息如下:
auth = new UsernamePasswordAuthenticationToken(username, password, auths);
Authentication result = authManager.authenticate(auth);
SecurityContextHolder.getContext().setAuthentication(result);
我正在寻找与此类似的东西,或者直接在SecurityContextHolder.getContext()中的某处添加访客名称的方法。我可以获得spring Session
对象或其他会话来存储此信息吗?
我没有使用Spring MVC
。
答案 0 :(得分:0)
您应该使用框架提供的anonymous authentication mechanism而不是假的UsernamePasswordAuthenticationToken
。您可以使用安全命名空间配置它:
<security:http ....>
....
<security:anonymous username="guest" granted-authority="ROLE_GUEST"/>
</security:http>
这将导致AnonymousAuthenticationFilter
将带有提供的名称和角色的AnonymousAuthenticationToken
放入安全上下文中。 (当然,只有在UsernamePasswordAuthenticationFilter
等其他过滤器无法对用户进行身份验证时才会发生这种情况。)