вход / выход spring mvc с использованием сеанса

#spring-mvc

#spring-mvc

Вопрос:

В этом примере входа в систему я пытаюсь добавить сеанс для пользователя.Базовая функция входа в систему работает нормально.Когда я возвращаюсь на домашнюю страницу, я не могу получить доступ к странице, которая находится на странице успешного входа в журнал.Мне нужно снова войти в систему.Я новичок в spring, пожалуйста, скажите мне, как я должен получить сеанс.

Logincontoller.java

 @Controller
public class LoginController {

    @Autowired
    private LoginService loginService;

    @RequestMapping("login.html")
    public String toLogin(Model model) {
        Login login = new Login(); 
        model.addAttribute("login",login);
        return "login";
    }

    @RequestMapping(value ="login.html", method = RequestMethod.POST)
    public ModelAndView  doLogin(@Valid @ModelAttribute ("login") Login login, 
            BindingResult bindingresult,HttpSession session ) {
         ModelAndView view = new ModelAndView("login");
        if(!bindingresult.hasErrors()){
            if(!loginService.authenticateUser(login)){
                bindingresult.addError(new ObjectError("invalid", "Invalid Credentials!!!"));
                return new ModelAndView("error");
            }
            else{
                session.setAttribute("login", login);
                view.setViewName("success");
            }
        }

         return view;
}

    @RequestMapping("/logout")
      public String logout(HttpSession session ) {
         session.invalidate();
         return "redirect:/login.html";
      }

}
  

Комментарии:

1. Вы видите, что JSESSIONID устанавливается в ваших файлах cookie?

2. Как это увидеть? Прежде всего, правильный код?

3. Помимо того факта, что я бы посоветовал использовать что-то вроде Spring Security, а не внедрять собственное решение, я не вижу ничего плохого в коде. Для просмотра файлов cookie можно использовать множество инструментов отладки браузера. В Chrome от Google встроены инструменты разработчика, в IE есть некоторые инструменты разработчика (возможно, их придется установить), в FireFox есть FireBug. Я не использую Opera или Safari, но готов поспорить, что у них тоже есть некоторые инструменты. В худшем случае, взломайте папку, в которой хранятся файлы cookie для вашего браузера, и откройте их в текстовом редакторе.

4. Я новичок в spring. Я не хочу использовать spring security. Вот почему я пытаюсь таким образом. Я проверю опцию firebug.

5. Сеансы создаются, когда клиент впервые открывает страницу. Сервер установит файл cookie JSESSIONID или добавит его в URL-адрес, если он не может установить файл cookie. JSESSIONID — это то, что связывает запросы клиента с сеансом, который находится на сервере.

Ответ №1:

 @RequestMapping(value = "/logout")
    public String logout(HttpServletRequest request) {
        System.out.println("logout()");
        HttpSession httpSession = request.getSession();
        httpSession.invalidate();
        return "redirect:loginformRichUI.html";
    }
  

Комментарии:

1. Это не работает, когда я нажимаю кнопку «Назад», это показывает, что я вошел в систему.