Spring Security-无密码的程序化登录

当用户单击其带有Spring Security的电子邮件中的链接时,我试图执行自动登录。

我已经看到了很多执行程序化登录的示例,如下所示:

UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);

try {

Authentication auth = authenticationManager.authenticate(token);

SecurityContextHolder.getContext().setAuthentication(auth);

repository.saveContext(SecurityContextHolder.getContext(), request, response);

rememberMeServices.loginSuccess(request, response, auth);

....

我看到的问题是我没有原始密码,所以无法创建UsernamePasswordAuthenticationToken。如果我没有纯文本密码(我有经过编码的密码),是否还有其他登录用户的方式?

提前致谢。

回答:

请注意,在允许通过电子邮件中的链接登录时,您知道自己在做什么。SMTP不是安全的协议,因此依靠某人使用电子邮件作为身份验证通常是不好的。

如果您已经知道它们已通过身份验证,则无需使用AuthenticationManager。相反,您可以直接设置身份验证,如下所示:

Authentication authentication = new UsernamePasswordAuthenticationToken(user, null,

AuthorityUtils.createAuthorityList("ROLE_USER"));

SecurityContextHolder.getContext().setAuthentication(authentication);

如果您想要一个完整的示例,则可以参考安全邮件应用程序中的SignupController,该应用程序是Spring

Security 3.1入门(演示的InfoQ视频)的基础。

以上是 Spring Security-无密码的程序化登录 的全部内容, 来源链接: utcz.com/qa/436282.html

回到顶部