2011-09-01 53 views
3

我是Spring Security的新手。 我已经实现了UserDetails来创建我自己的用户。我也有我的自定义userDetailsS​​ervice。现在一切正常,但我需要在没有登录的情况下更新我的用户信息。如何做到这一点?我如何接收来自上下文的信息然后进行更改? 在此先感谢Spring Security如何在不登录的情况下更新userDetails

回答

3

如果用户未登录,则无法从SecurityContext获取它。这是将用户置于上下文中的登录过程。

只需使用UserDetailsS​​ervice加载用户(UDS毕竟只是一个DAO),然后根据需要进行修改并保存。这会很有用,例如在管理用例中(例如管理员更正用户名中的拼写错误)。

让我知道,如果这不是你要求的。

编辑:

OK,以响应您的评论(我从内存中这样做,所以它可能不是100%):

SecurityContext context = SecurityContextHolder.getContext(); 
Authentication auth = context.getAuthentication(); 
CustomUser user = (CustomUser) auth.getPrincipal(); 

东西非常接近如果这不完全正确。要小心,因为如果用户没有真正登录,你将得到一个ClassCastException - 如果Spring Security匿名过滤器被激活,对getPrincipal()的调用将返回一个字符串“anonymousUser”。您当然可以轻松更新代码来处理这种可能性。

+1

用户被锁定。但是,我需要更新它,而无需再次登录..我不知道该怎么做 –

相关问题