2012-01-26 112 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