栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在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);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号