gpt4 book ai didi

java - 如何通过类实现 Autowiring SecurityContextRepository

转载 作者:行者123 更新时间:2023-12-01 06:15:01 24 4
gpt4 key购买 nike

我正在尝试使用我在那里获取的代码进行 Ajax 登录,这是:

@Controller
@RequestMapping("/login")

public class AjaxLoginController {

@Autowired
@Qualifier("AuthenticationManager")
AuthenticationManager authenticationManager;

@Autowired
SecurityContextRepository repository;

@Autowired
RememberMeServices rememberMeServices;

@RequestMapping(method=RequestMethod.GET)
public void login() {}

@RequestMapping(method=RequestMethod.POST)
@ResponseBody
public String performLogin(
@RequestParam("j_username") String username,
@RequestParam("j_password") String password,
HttpServletRequest request, HttpServletResponse response)
{
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);
return "{\"status\": true}";
} catch (BadCredentialsException ex) {
return "{\"status\": false, \"error\": \"Bad Credentials\"}";
}
}
}

这个例子有一个用于 Autowiring 的bean的xml配置,但是我的项目需要通过类配置来完成它。我解决了第一个 Autowiring 问题,将其添加到我的安全类配置中:

@Bean
public AuthenticationManager AuthenticationManager() throws Exception {
return authenticationManager();
}

现在我正在尝试使用 securityContextRepository 做一些事情,但我在论坛上找到的都是 xml 配置解决方案。有人知道如何将此类配置为 Bean 来解决这个问题吗?谢谢。

最佳答案

HttpSessionSecurityContextRepositorySecurityContextRepository 的默认实现。将其添加到配置中:

@Bean
public SecurityContextRepository securityContextRepository() {
return new HttpSessionSecurityContextRepository();
}

请注意,bean 的名称是 securityContextRepository 而不是 repository,我认为这可以减少任何可能的歧义。

关于java - 如何通过类实现 Autowiring SecurityContextRepository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26906293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com