#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. Это не работает, когда я нажимаю кнопку «Назад», это показывает, что я вошел в систему.