После того, как пользователь вошел в систему из браузера A,
браузер B загружает тот же пользовательский компонент, что и браузер A, поэтому браузер B автоматически входит в систему.вместо пружинной безопасности.
Что это исправить?
Заранее спасибо.Вот код
LoginInterceptor
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Autowired
private UserBean userBean;
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
String contextPath = request.getContextPath();
String requestURI = request.getRequestURI();
Boolean matched = requestURI.contains(contextPath + "/login");
if (matched || userBean.getLogined()) {
return true;
} else {
response.sendRedirect(contextPath + "/login");
return false;
}
}
}
LoginController
@Controller
@RequestMapping("login")
public class LoginController {
@Autowired
private UserBean userBean;
@RequestMapping(method = RequestMethod.GET)
public String loginGET(Model model) {
LoginInput loginInput = new LoginInput();
model.addAttribute("login", loginInput);
return "login";
}
@RequestMapping(method = RequestMethod.POST)
public String loginPOST(@Valid LoginInput loginInput, BindingResult result, Model model) {
if (result.hasErrors()) {
return "login";
}
Boolean logined = userBean.login(loginInput.getUserName(), loginInput.getPassword());
if (!logined) {
result.rejectValue("userName", "IncorrectLogin", "Incorrect login or password!");
return "login";
}
return "redirect:/index";
}
}
LoginInput
public class LoginInput {
@NotEmpty
@Size(min = 1, max = 50)
private String userName;
@NotEmpty(message = "Password must not be blank.")
@Size(min = 4, max = 20, message = "Password must between 4 to 20 Characters.")
private String password;
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
AppConfig
@Configuration
public class AppConfig {
@Bean @Scope("singleton")
public LdapService ldapService() throws LDAPException {
return new LdapService();
}
@Bean @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public UserBean userBean() {
return new UserBean();
}
@Bean @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public UserConfig userConfig() {
return new UserConfig();
}
}