- HTTP応答にCookieを入れてウェブブラウザに伝達すれば、以後ウェブブラウザでサーバーに要請する時、該当Cookieを継続的に送ってくれる。
- 永続的な CookieとセッションCookieがあるが、通常ブラウザ終了時にログアウトされることを期待するので、セッションCookieをお勧めする。
永続的な Cookie : 有効期限を入力すると、その日まで保持
セッション Cookie : 有効期限を省略するとブラウザ終了時まで保持@PostMapping("/login") public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if (loginMember == null) { bindingResult.reject("loginFail", "IDまたはパスワードが正しくありません。"); return "login/loginForm"; } //ログイン成功処理 Cookie idCookie = new Cookie("memberId", String.valueOf(loginMember.getId())); response.addCookie(idCookie); return "redirect:/"; } public String logout(HttpServletResponse response) { Cookie cookie = new Cookie("memberId", null); // 当該Cookieを即時終了 cookie.setMaxAge(0); response.addCookie(cookie); return "redirect:/"; }
- 問題点
- クライアント側でCookie値を任意変更することができる。
- 個人情報やクレジットカード情報を入れておけば、ウェブブラウザに保管されるため、パソコンを通じて情報を盗み取ることもでき、ネットワーク要請ごとにクライアントからサーバーに伝達され続けるため、ネットワーク伝送区間から情報を盗み取ることもできる。
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme