5

WebアプリでSpringSecurity3.1を使用しようとしています。私はこの特定のチュートリアルに従うことから始めました。

ここで使用されている手法を使用しています。認証プロバイダーはデータソースです。

<authentication-manager>
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"

           users-by-username-query="
              select email,password 
              from usr where email=?" 

           authorities-by-username-query="
              select u.email, ur.authority from usr u, usr_roles ur 
              where u.usr_id = ur.usr_id and u.email =?  " 

        />
    </authentication-provider>
</authentication-manager>

そのため、ユーザー名としてメールを使用していて、有効な列がないことに気付いた場合。

これは機能していないようです。

私のログインフォームは次のようになります

<form name="f" action="<c:url value="j_spring_security_check" />" method="POST">
    <table>
        <tr>
        <td>User:</td>
        <td><input type="text" name="j_username" value=""></td>
        </tr>
        <tr>
        <td>Password:</td>
        <td><input type="password" name="j_password" />
        </td>
        </tr>
        <tr>
        <td colspan="2">
                <input name="submit" type="submit" value="submit" />
            </td>
        </tr>
        <tr>
        <td colspan="2">
                <input name="reset" type="reset" />
        </td>
        </tr>
    </table>
</form>

これを機能させる方法についてアドバイスしてください、または私は何かが足りませんか?

4

1 に答える 1

5

なんとか自分で解決できました。authentication-managerの構成を次のように変更しました

<authentication-manager>
      <authentication-provider>

            <jdbc-user-service data-source-ref="dataSource"

           users-by-username-query="
              select * from (select email as username,password,1 as enabled 
              from usr) where username=?" 

           authorities-by-username-query="
             select * from
            (select u.email username, ur.authority AUTHORITY 
            from usr u, usr_role ur 
              where u.usr_id = ur.usr_id) where  username = ? " 

        />
      </authentication-provider>
    </authentication-manager>
于 2012-05-09T07:35:35.567 に答える