2012-01-26 110 views
0

我可以創建兩個不同類型的secuser的如secuser和最終用戶的,SecRole和EndRole 在我的secuser和secrole會爲我的醫院,醫生和最終用戶的管理員給予,endrole將給予的最終用戶我的醫院項目Grails的春季安全SecUser

我有secuser和secrole表與我,但是當我創建enduser和end2與s2-quickstart命令能夠獲得域類,我沒有超越我的登錄和註銷控制器現在我無法我舉創建終端用戶對象endrole對象

class BootStrap { 
    def springSecurityService 
    def init = { servletContext -> 

     /* 
     def userRole = EndRole.findByAuthority('ROLE_USER') ?: new EndRole(authority: 'ROLE_USER').save(failOnError: true) 

     def endadminUser = EndUser.findByUsername('endadmin') ?: new EndUser(
     username: 'endadmin', 
     password:'endadmin',enabled: true).save(failOnError: true) 

     if (!endadminUser.authorities.contains(userRole)) { 
     EndUserEndRole.create endadminUser, userRole 
     } 
     */ 

     def x= new EndRole(authority: 'ROLE_USER') 
     println(" new fresh  "+x.authority) 
    } 
    def destroy = { 
    } 
} 

回答

1

你可以有許多類型的用戶,只要你想,而是要支持,你將需要自定義UserDetailsService。這是一件很平常的事情,所以文檔中有一個部分,參見「11自定義的UserDetailsS​​ervice」在http://grails-plugins.github.com/grails-spring-security-core/docs/manual/

我不知道爲什麼你認爲你需要一個以上的角色類,但是。只需爲管理員和醫生創建角色名稱不同的SecRole實例,例如new SecRole(authority: 'ROLE_DOCTOR').save()new SecRole(authority: 'ROLE_ADMIN').save()

你可能不都需要不同的用戶類(至少不是出於安全 - 你可能需要支持不同屬性的非安全原因)。只需創建SecUser實例,並給予他們任何角色(與EndUserEndRole.create)他們需要的,即ROLE_DOCTOR或ROLE_ADMIN。

幫你一個忙,閱讀插件文檔,也可以閱讀Spring Security文檔http://static.springsource.org/spring-security/site/docs/3.0.x/reference/springsecurity.html - 如果你不熟悉如何保護網站,這些東西太重要了。

+0

謝謝@Burt貝克威思您的回覆我解決了這個問題,我的問題是與類之間的關係我。我已經成功地完成了我一半的項目,但我在的地方擊中請幫我http://stackoverflow.com/questions/9046596/match-onesecrole-among-many-roles-of-secuser-grails – user1170646