【问题标题】:How to autowire SecurityContextRepository by class implementation如何通过类实现自动装配 SecurityContextRepository
【发布时间】:2015-01-10 10:41:42
【问题描述】:

我正在尝试使用我在那儿获取的代码进行 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\"}";
    }
}
}

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

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

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

【问题讨论】:

    标签: java ajax spring login spring-security


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多