私はSpring 4.3.3を使用していますが、私のアプリケーションのログイン/ログアウト機能を実装しようとしています。私が抱えている問題は、ログインしてすぐにもう一度ログアウトすると、すべてが期待通りに機能するということです。私は、ログイン・ページのURL:login?logoutにログイン・ボックスにログアウトしたメッセージを表示します。しかし、ログインして別のページに移動してからログアウトすると、ログイン・ページに正常にログアウトしたメッセージが表示されたログイン・ページに戻りますが、ログイン・ボタンをクリックするとログインしていません。 URLで:メッセージなしでログインし、私がログインされる第2回ログイン]をクリックする必要があります以下は、私が春のセキュリティログイン/ログアウトの問題
のsecurity.xml
<http pattern="/resources/**" security="none"/>
<http pattern="/forgot**" security="none"/>
<http pattern="/reset**" security="none" />
<!-- enable use-expressions -->
<security:http
auto-config="false"
use-expressions="true">
<headers><cache-control/></headers>
<security:intercept-url pattern="/resources**" access="permitAll" />
<security:intercept-url pattern="/login**" access="permitAll" />
<security:intercept-url pattern="/users**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<security:intercept-url pattern="/suppliers**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<security:intercept-url pattern="/reports**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<security:intercept-url pattern="/games**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<security:intercept-url pattern="/clients**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<security:intercept-url pattern="/servers**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<security:intercept-url pattern="/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
<security:intercept-url pattern="/logs**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
<!-- access denied page -->
<access-denied-handler error-page="/403" />
<security:form-login
login-page="/login"
authentication-failure-url="/login?error"
username-parameter="username"
password-parameter="password"
login-processing-url="/auth/login_check" />
<security:logout
invalidate-session="true"
logout-success-url="/login"
logout-url="/login?logout"
delete-cookies="JSESSIONID"/>
<!-- enable csrf protection -->
<csrf/>
<!-- Default lifeTime 2 weeks can be configured -->
<!--<remember-me key="uniqueAndSecret"/>-->
</security:http>
コントローラメソッド
を使用していたコードの一部です。login.jsp
<form name='loginForm' action="<c:url value='/auth/login_check?targetUrl=${targetUrl}' />" method='POST'>
<div class="form-group">
<div id="emailError" class="alert alert-danger" style="display:none;"></div>
<label for="email">Email
<input class="form-control" id="email" type="email" name="username" placeholder="Email">
</label>
</div>
<div class="form-group">
<label for="password">Password
<input class="form-control" id="password" type="password" name="password" placeholder="Password">
</label>
</div>
Remember Me: <input type="checkbox" name="remember-me" />
<input id="login"class="btn btn-primary" name="submit" type="submit" value="Login">
<div><a id="forgotPass">forgot password</a></div>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form>
こんにちは、わかりません。私はチュートリアルにちょうど従っていて、2つのアスタリスクを持っていました。なぜ/ログ**が決してヒットしないのか説明できますか? – user3389610
「許可」リストに「/ auth」を追加してはいけませんか? –
@dur、フォームメソッドはauth/login_checkで設定されているので、Springはこれらのリクエストを "login-processing-url"として扱いますか?別の考えでは、targetUrl = somereferenceを持つためリダイレクトが発生し、設定はワイルドカードと一致しますか?login-processing-url = "/ auth/login_check *" –