2011-11-12 5 views
2

ApplicationContextの-のsecurity.xmlファイル:春のセキュリティ2つのテーブルのauth

<authentication-manager alias="authenticationManager"> 
    <!-- DAO Based Security --> 
    <authentication-provider> 
     <password-encoder hash="sha-256" /> 
     <jdbc-user-service data-source-ref="dataSource" 
      users-by-username-query="SELECT A.user_name AS username, A.consumer_password AS password, A.enabled AS enabled FROM consumer A where A.user_name=?" 
      authorities-by-username-query="SELECT A.username as username, A.password as password, R.name as authority FROM admin A, roles R WHERE A.roles=R.id AND A.username=?"/> 
    </authentication-provider> 
</authentication-manager> 

ログインが任意の消費者のために正常に動作しますが、私は管理者のいずれかが

のSQL returアカウントからログインすることができませんnは、管理者アカウント用:消費者アカウントの

+----------+------------------------------------------------------------------+-----------+ 
| username | password               | authority | 
+----------+------------------------------------------------------------------+-----------+ 
| admin | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 | ADMIN  | 
+----------+------------------------------------------------------------------+-----------+ 

SQLリターン:私が正しく理解していれば

+----------+------------------------------------------------------------------+---------+ 
| username | password               | enabled | 
+----------+------------------------------------------------------------------+---------+ 
| adam  | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 |  | 
+----------+------------------------------------------------------------------+---------+ 

答えて

2

、消費者のアカウントがconsumerテーブルに格納されており、管理者はadminテーブルに格納されています。あなたはusers-by-username-queryの場合にconsumersテーブルだけを照会し、adminテーブルを照会しないと、管理者がログインできることを期待しているのはなぜですか?

これを達成する最も簡単な方法は、顧客と管理者の両方を1つのテーブルに保存することです(これはuserとしましょう)。次に、users-by-username-queryのテーブルを照会して、そのログインのユーザーが存在するかどうかを確認し(顧客または管理者に関係なく)、rolesテーブルを照会してauthorities-by-username-queryというテーブルを照会することによって、ユーザーが顧客か管理者かを確認できます。現在ログインしているユーザーは、顧客または管理者であれば、いつでも春のセキュリティを頼むことができるよりも

+----------+------------------------------------------------------------------+ 
| username | role               
+----------+------------------------------------------------------------------+ 
| adam  | customer 
+----------+------------------------------------------------------------------+ 
| admin | admin 
+----------+------------------------------------------------------------------+ 

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/technical-overview.html#core-componentsを参照してください、セクション:現在についての情報の取得

rolesテーブルにはそのような何かを見て、のは言ってみましょうユーザー)。

+0

hmmこれは意味をなさないでしょう – adam2510

関連する問題