1

春のプロジェクトのために、非常に基本的でわかりやすい認証を構築しようとしています。

私が抱えている問題は、2つの基本アカウント(管理者とユーザー)を宣言したにもかかわらず、アプリケーションが常に「ログイン失敗」ページに移動することです。

私のアプリケーション-Security.xml:

<http auto-config="true" use-expressions="true">
        <form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login/denied" />
        <logout logout-url="/resources/j_spring_security_logout" />
        <!-- Configure these elements to secure URIs in your application -->
        <intercept-url pattern="/choices/**" access="hasRole('ROLE_ADMIN')" />
        <intercept-url pattern="/member/**" access="isAuthenticated()" />
        <intercept-url pattern="/resources/**" access="permitAll" />
        <intercept-url pattern="/login" access="permitAll" />
        <intercept-url pattern="/home/**" access="hasRole('ROLE_ADMIN')" />
        <intercept-url pattern="/*Details/*" access="hasRole('ROLE_USER')" />

    </http>
    <!-- Configure Authentication mechanism -->
    <authentication-manager alias="authenticationManager">
        <!-- SHA-256 values can be produced using 'echo -n your_desired_password | sha256sum' (using normal *nix environments) -->
        <authentication-provider>
            <password-encoder hash="sha-256" />
            <user-service>
                <user name="admin" password="admin" authorities="ROLE_ADMIN" />
                <user name="user" password="user" authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>

私の非常に基本的なログインフォーム:

<form action="/${app_name}/resources/j_spring_security_check" method="POST">
        <label for="j_username">Username</label>
        <input id="j_username" name="j_username" type="text" /><br/>

        <label for="j_password">Password</label>
        <input id="j_password" name="j_password" type="password" /><br/>

        <input type="submit" value="Login" />
    </form>

今のところ、コントローラーはログイン、ログイン/拒否などのURLを解決するためだけにあります。

私はSpringとRooから始めたばかりなので、これは私が見落としている明らかなことかもしれません。

時間を割いて答えてくれた人に感謝します。

4

1 に答える 1

3

あなたの問題はあなたがパスワードエンコーダーを定義したことです

<password-encoder hash="sha-256" />

パスワードがプレーンテキストの場合

<user name="admin" password="admin" authorities="ROLE_ADMIN" />

エンコーダーを削除するか、(より適切に)選択したアルゴリズムでエンコードされたパスワードを指定します(sha-256)

于 2012-12-18T09:58:30.157 に答える