1

我想添加来宾功能:这意味着来宾是像用户一样行为的对象,但不是持久化的,而是拥有ROLE_GUEST而不是ROLE_USER. 我想在会话中存储一个guestID,这样当客人做某事时,我可以检索客人并以客人的名义采取行动。如果我想保留一个Stateless Servlet.

我当前的注册用户登录是这样的:

auth = new UsernamePasswordAuthenticationToken(username, password, auths);
Authentication result = authManager.authenticate(auth);
SecurityContextHolder.getContext().setAuthentication(result);

我正在寻找与此类似的东西,或者直接在 SecurityContextHolder.getContext() 中的某处添加来宾名称的方法。我可以获取弹簧Session对象或另一个会话来存储此信息吗?

我没有使用Spring MVC.

4

1 回答 1

0

UsernamePasswordAuthenticationToken您应该使用框架提供的匿名身份验证机制,而不是假的。您可以使用安全命名空间对其进行配置:

<security:http ....>
    ....
    <security:anonymous username="guest" granted-authority="ROLE_GUEST"/>
</security:http>

这将导致将AnonymousAuthenticationFilter具有AnonymousAuthenticationToken提供的名称和角色的一个放入安全上下文中。(当然,只有在其他过滤器(如UsernamePasswordAuthenticationFilter)无法验证用户身份时才会发生这种情况。)

于 2013-02-22T21:07:57.333 回答