- 我需要什么:
对于访问我网站的每个新用户,我都会创建一个 MyUser 对象(与此类由什么组成无关)并将其保存到数据库。
我希望每次具有相同 sessionId 的用户访问我的网站时都使用此对象。
对我来说,它看起来几乎像匿名身份验证。所以我禁用了它并用我自己的过滤器替换:
<http auto-config="true">
...
<anonymous enabled="false"/>
<custom-filter ref="userGeneratorFilter" position="ANONYMOUS_FILTER"/>
</http>
我认为 securityContext 包含先前经过身份验证的用户的主体,但看起来过滤器链中的过滤器之一为每个请求手动添加它。
换句话说,每次我进入 UserGeneratorFilter.doFilter
SecurityContextHolder.getContext().getAuthentication() == null;
那么我如何知道是否需要创建一个新的 MyUser 对象或从数据库中获取现有的对象?
ps。我认为我选择了一种错误的方式=(关于我的任务的几句话:我希望未经授权的用户对我的资源具有有限的访问权限,但是当他注册时,我希望他在未经授权时输入的所有数据都合并到他的正常数据中帐户。
感谢您的关注。每次我写下这句话时,版主都会将其删除。但我永远不会停止写它=)
最佳答案
只需使用诸如 CookieID
或 VisitorID
之类标识用户的内容设置一个不会过期的 cookie。当人们访问您的网站时检查此 cookie,它应该识别用户。
关于java - Spring 安全: How to persist each anonymous user?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197429/