如何在Spring SecuritySpringMVC中手动设置经过身份验证的用户

如何在Spring SecuritySpringMVC中手动设置经过身份验证的用户,第1张

如何在Spring Security / SpringMVC中手动设置经过身份验证的用户

不久前,我和您有同样的问题。我不记得详细信息,但是以下代码对我有用。该代码在Spring
Webflow流中使用,因此在RequestContext和ExternalContext类中使用。但是与您最相关的部分是doAutoLogin方法。

public String registerUser(UserRegistrationFormBean userRegistrationFormBean,     RequestContext requestContext,     ExternalContext externalContext) {    try {        Locale userLocale = requestContext.getExternalContext().getLocale();        this.userService.createNewUser(userRegistrationFormBean, userLocale, Constants.SYSTEM_USER_ID);        String emailAddress = userRegistrationFormBean.getChooseEmailAddressFormBean().getEmailAddress();        String password = userRegistrationFormBean.getChoosePasswordFormBean().getPassword();        doAutoLogin(emailAddress, password, (HttpServletRequest) externalContext.getNativeRequest());        return "success";    } catch (EmailAddressNotUniqueException e) {        MessageResolver messageResolvable      = new MessageBuilder().error()     .source(UserRegistrationFormBean.PROPERTYNAME_EMAIL_ADDRESS)     .pre("userRegistration.emailAddress.not.unique")     .build();        requestContext.getMessageContext().addMessage(messageResolvable);        return "error";    }}private void doAutoLogin(String username, String password, HttpServletRequest request) {    try {        // Must be called from request filtered by Spring Security, otherwise SecurityContextHolder is not updated        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);        token.setDetails(new WebAuthenticationDetails(request));        Authentication authentication = this.authenticationProvider.authenticate(token);        logger.debug("Logging in with [{}]", authentication.getPrincipal());        SecurityContextHolder.getContext().setAuthentication(authentication);    } catch (Exception e) {        SecurityContextHolder.getContext().setAuthentication(null);        logger.error("Failure in autoLogin", e);    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5122824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存