java springmvc权限校验_java – 如何在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)

.code("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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值