Spring Project Part 7-自動登録(記憶-me)
16137 ワード
自動登録機能は
Spring Securityでは、メモリで
自動ログイン機能を処理する方法では、ログインした情報をデータベースで記録し、ユーザーが再アクセスしたときにセッションに情報がない場合はデータベースをクエリーするのが最も一般的です.サーバメモリにのみデータを格納するよりも、情報をデータベースに共有し、実行を安定させることが利点です.
Spring Securityでは、
spring securityの公式ドキュメントのログイン情報を維持する表を以下に示します.
security-context.xml
自動登録は登録画面選択処理により行われ、
customLogin.jsp
データベースの
ブラウザを終了して
コンソールの説明
再接続されたユーザー・シリーズが見つかり、存在する場合は自動的にログインします.次に、再取得したトークンとログイン時間を更新します.
自動ログイン機能を使用する場合、ユーザーがログアウトした場合、従来とは異なり、自動ログイン用のクッキーも削除する必要があります.Cookieを削除する項目を
security-context.xml
次の記事では、このアイテムの空気を使用してスプリングの安全性を設定する方法について説明します.
쿠키(Cookie)
で実現されることが多い.Spring Securityでは、メモリで
remember-me
機能を処理したり、データベースで少量の設定を行ったりすることができます.security-context.xml
は、<security:remember-me>
タグを使用して機能を実現する.<security:remember-me>
は、複数の属性値を指定することができる.複数の属性で主に使用される属性はこうです.key
:Cookieで使用される値を暗号化するキー値data-source-ref
:DataSource
、テーブルを使用して既存のログイン情報を記録remember-me-cookie
:ブラウザに保存されているCookieの名前を指定します.既定値はremember-me
です.remember-me-parameter
:Webページにログインする場合、remember-me
の多くはチェックボックスを使用して処理されます.このとき、チェックボックスラベルはname
属性を表します.token-validity-seconds
:クッキーの有効時間を指定します.データベースを使用した自動ログイン
自動ログイン機能を処理する方法では、ログインした情報をデータベースで記録し、ユーザーが再アクセスしたときにセッションに情報がない場合はデータベースをクエリーするのが最も一般的です.サーバメモリにのみデータを格納するよりも、情報をデータベースに共有し、実行を安定させることが利点です.
Spring Securityでは、
remeber-me
機能もJDBC
を使用するように、指定された名前のテーブルを生成すると、指定されたSQL
文が実行され、処理と直接実現の方法があります.生成されたテーブルは、ログインを維持するために必要な情報を保存するために使用されるだけで、カスタマイズされたテーブルではなく、指定されたフォーマットのテーブルを生成します.spring securityの公式ドキュメントのログイン情報を維持する表を以下に示します.
create table persistent_logins
(
username varchar2(64) not null,
series varchar2(64) primary key,
token varchar2(64) not null,
last_used timestamp not null
);
テーブルを生成するスクリプトは、特定のデータベースに基づいて、テーブル名とカラム名以外のカラムのタイプを適切に調整します.自動登録では、データベースの設定を使用して別途設定せず、data-source-ref
万を指定します.security-context.xml
<security:http>
<!-- 678p 자동 로그인(remember-me) token-validity-seconds=일주일 -->
<security:remember-me data-source-ref="dataSource" token-validity-seconds="604800"/>
</security:http>
ログイン画面の自動ログインの設定
自動登録は登録画面選択処理により行われ、
<input>
ラベルのname
属性値はremember-me
として指定される.customLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<h1>커스텀 로그인 페이지</h1>
<h2><c:out value="${error}"/></h2>
<h2><c:out value="${logout}"/></h2>
<form action="/login" method="post">
<div>
<input type="text" name="username" value="">
</div>
<div>
<input type="password" name="password" value="">
</div>
<!-- 추가 -->
<div>
<input type="checkbox" name="remember-me">자동로그인
</div>
<div>
<input type="submit">
</div>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
</form>
</body>
</html>
プロジェクトを実行して자동로그인
をチェックし、ブラウザでCookieを表示すると、remember-me
というCookieが自動的に生成されます.データベースの
persistent_logins
表には、ユーザーがログインしている情報がまだ存在するかどうかも表示されます.remember-me
名で生成されたCookieは有効であり、ユーザーはブラウザを完全に終了した後、/sample/admin
のようなログインが必要なページに再びアクセスして、正常なログインを確保することができる.ブラウザを終了して
/sample/admin
を呼び出すと、ブラウザから送信された情報を表示すると、remember-me
Cookieの情報が送信されます.コンソールの説明
再接続されたユーザー・シリーズが見つかり、存在する場合は自動的にログインします.次に、再取得したトークンとログイン時間を更新します.
ログアウト時にCookieを削除
自動ログイン機能を使用する場合、ユーザーがログアウトした場合、従来とは異なり、自動ログイン用のクッキーも削除する必要があります.Cookieを削除する項目を
security-context.xml
に指定します.security-context.xml
<security:http>
<!-- 681p 로그아웃할 때 쿠키도 삭제 -->
<security:logout logout-url="/customLogout" invalidate-session="true" delete-cookies="remember-me, JSESSION_ID"/>
</security:http>
他の設定がなければ、自動ログインで使用されるクッキー名はremember-me
であり、Tomcat
で実行される場合、WAS
で発行されるクッキー名はJSESSION_ID
であるべきである.Tomcat
で発行されるクッキーは指定する必要はありませんが、関連するすべてのクッキーを同時に削除することが望ましいです.次の記事では、このアイテムの空気を使用してスプリングの安全性を設定する方法について説明します.
Reference
この問題について(Spring Project Part 7-自動登録(記憶-me)), 我々は、より多くの情報をここで見つけました https://velog.io/@business160308/스프링-프로젝트-Part7-자동-로그인remember-meテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol