Я разрабатываю приложение с использованием Spring. У меня проблема с входом и выходом. Я вошел в приложение, используя учетные данные для входа (например, имя пользователя: john, пароль: doe) и перешел на страницу администратора, а затем вышел из приложения. Но на этот раз я использовал другие учетные данные для входа (например, имя пользователя: jack, пароль: белый) для входа в систему. Когда я перехожу на страницу администратора и отлаживаю свое приложение, @ModelAttribute(value = "myUser") User loggedInUser
в AdminController
показывает старое значение пользователя. Я не мог понять, почему это происходит. Кто-нибудь может помочь?
Мои исходные коды ниже:
@Controller
@RequestMapping("/LoginController")
@SessionAttributes({"myUser"})
public class LoginController
{
private static String LOGIN_URL = "login/login_";
private static String INDEX_URL = "main/index";
@Autowired
private IUserService userService = null;
@RequestMapping("/login")
public ModelAndView login(@RequestParam(value="userName", required=false) String argUserName, @RequestParam(value="password", required=false) String argPassword, HttpServletRequest req)
{
ModelAndView modelAndView = new ModelAndView();
// Assume argUserName and argPassword not null
User loginUser = this.userService.getUser(argUserName, argPassword);
HttpSession ses = req.getSession();
// Assume loginUser not null
ses.setAttribute("myUser", loginUser);
modelAndView.setViewName(LoginController.INDEX_URL);
return modelAndView;
}
@RequestMapping("/logout")
public String logout(HttpServletRequest argReq, HttpServletResponse argResp) throws ServletException, IOException
{
HttpSession session = argReq.getSession(false);
Enumeration<?> attributeNames = session.getAttributeNames();
while(attributeNames.hasMoreElements())
{
String attrName = (String)attributeNames.nextElement();
if(session.getAttribute(attrName) != null)
{
session.setAttribute(attrName,null);
//session.removeAttribute(attrName);
attributeNames = session.getAttributeNames();
}
}
// close session
session.invalidate();
return LoginController.LOGIN_URL;
}
}
Админконтроллер
@Controller
@RequestMapping("/AdminController")
@SessionAttributes({"myUser"})
public class AdminController
{
private static String SETTINGS_PAGE = "settings/index";
@RequestMapping("/index")
public ModelAndView index(@ModelAttribute(value = "myUser") User loggedInUser, HttpSession ses)
{
ModelAndView modelAndView = new ModelAndView();
Map<String, Object> map = new HashMap<String, Object>();
map.put("loggedInUserId", loggedInUser.getUserID());
map.put("userName", loggedInUser.getUserName());
modelAndView.addAllObjects(map);
modelAndView.setViewName(AdminController.SETTINGS_PAGE);
return modelAndView;
}
}