2014-01-13 69 views
0

我有如下認證表,春季安全 - 用戶對多個部門有多個角色。 - 如何指定角色?

員工


id_employee,用戶名,密碼......


1,約翰,woefijlsdkjfu230rdfrfj
2,彼得,sdlautoerwjgosj120943820



employee_department


id_employee_department,僱員標識,部門標識,角色...


1,1,123123,ROLE_STAFF
2,1,123124,ROLE_MANAGER
.. 。


約翰是在同一時間系123123一工作人員,他是爲123124.

我寫安全bean屬性管理器,

<jdbc-user-service id="userService" data-source-ref="dataSource" 
       users-by-username-query="select username, password, true from employee where username=?" 
       authorities-by-username-query="select username, role from employee left join employee_department on id_employee = employee_id where username=?"/> 

的問題是,

約翰ROLE_STAFF ,ROLE_MANAGER都是。這意味着他可以訪問123123部門的所有數據,並認爲無用的信息,工作人員,以及當他訪問123124.

..

什麼是避免這種情況的最佳做法是什麼?

回答

0

我解決了這個問題,以兩個表像{}部門標識的新列_ {用戶名}

所以結合,

現在,只有1臺有關的僱員。

employee 
__ 
id_employee, username, password, role ... 
__ 
1, 123123_John, woeurewoij12332, ROLE_STAFF ... 
2, 123124_John, woeijfskdjfisahf2, ROLE_MANAGER ... 
3, 123123_Peter, woieruweoriuo1231, ROLE_STAFF... 
___ 

我還分離了Employee實體對象和dao服務來保護密碼和角色。

無論如何,我解決了我的問題。有沒有我無法想象的問題?