2

システムからユーザーをログアウトさせる URL をセットアップする方法を見つけようとしています。これはテスト専用です。現在、春のセキュリティでデフォルトのログインページを使用しています

ここに私のspring-secuirty.xmlがあります

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/security
                        http://www.springframework.org/schema/security/spring-security-3.1.xsd">


    <global-method-security pre-post-annotations="enabled" />

    <http use-expressions="true">
        <intercept-url access="hasRole('ROLE_VERIFIED_MEMBER')" pattern="/ask-union**" />
        <intercept-url access="hasRole('ROLE_VERIFIED_MEMBER')" pattern="/ask-welfare**" />
        <intercept-url pattern='/*' access='permitAll' />

        <form-login default-target-url="/ask-union" />

        <logout logout-success-url="/" />

        <session-management session-fixation-protection="newSession">
            <concurrency-control max-sessions="1"/>
        </session-management>

    </http>

    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="xxxxx@aol.com.dev" password="testing" authorities="ROLE_VERIFIED_MEMBER" />
               ser-service>

        </authentication-provider>
    </authentication-manager>
</beans:beans>
4

4 に答える 4

2

この行を構成に追加します

<logout logout-url="/sign-out"/>

次に、その URL へのリンクがある場合は、サインアウトします。

(ログアウト成功設定のすぐ下に追加します)

于 2013-04-25T19:12:02.953 に答える
0

遅くなりましたが、今後の参考のために -- セキュリティ フィルタがどのようにインスタンス化され、XML から構成されているかを知りたい場合は、次のパッケージをご覧ください。

org.springframework.security.config.annotation.web.configurers 

ログアウト フィルタ構成の場合、これは LogoutConfigurer クラスになります。LogoutConfigurer.createLogoutFilter()メソッドを確認すると、デフォルトの Logout フィルターがどのように作成されるかがわかります。これは、 @Configuration クラスで次のことができることを意味します。

@Bean
public LogoutFilter logoutFilter() {
    // NOTE: See org.springframework.security.config.annotation.web.configurers.LogoutConfigurer 
    // for details on setting up a LogoutFilter
    SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler();
    securityContextLogoutHandler.setInvalidateHttpSession(true);

    LogoutFilter logoutFilter = new LogoutFilter("/", securityContextLogoutHandler);
    logoutFilter.setLogoutRequestMatcher(new AntPathRequestMatcher("/logout"));
    return logoutFilter;
}

それがある場合は、Bean ごとにさらに構成するか、メソッド名がlogoutFilter()であるため、その Bean を自動的に選択することができます。

于 2014-06-26T22:44:27.350 に答える
0

your-domain/projectPath/sign-out使用している URL を再確認してください。SJS の例によると、絶対パスは である必要があります。spring-security.xml ファイルの関連部分が次のようになっている場合は、機能するはずです。

<http use-expressions="true">

. . .

    <logout
        logout-success-url="/"
        logout-url="/sign-out"/>

認証できる場合は、そのパスを参照するだけでログアウトできます。それでも URL で指定された中間サブディレクトリを試してみない場合、つまりyour-domain/projectPath/some-subdirectory/log-out.

認証できていますか?失敗しているのはログアウトの側面だけではないかもしれません...

于 2013-04-25T20:15:45.187 に答える