GrailsSpringSecuritySecuser

GrailsSpringSecuritySecuser,grails,spring-security,Grails,Spring Security,我是否可以创建两种不同类型的secuser,例如secuser和enduser、SecRole和EndRole 如果我的secuser和secrole将提供给我医院的管理员、医生和最终用户,那么endrole将提供给我医院项目的最终用户 我随身携带secuser和secrole表,但当我使用s2 quickstart命令创建enduser和endrole时,我能够获取域类,并且我没有覆盖我的登录和注销控制器,现在我无法在引导中创建enduser对象endrole对象 class BootStra

我是否可以创建两种不同类型的secuser,例如secuser和enduser、SecRole和EndRole 如果我的secuser和secrole将提供给我医院的管理员、医生和最终用户,那么endrole将提供给我医院项目的最终用户

我随身携带secuser和secrole表,但当我使用s2 quickstart命令创建enduser和endrole时,我能够获取域类,并且我没有覆盖我的登录和注销控制器,现在我无法在引导中创建enduser对象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 = {
   }
}

您可以拥有任意多种类型的用户,但要支持这一点,您将需要一个自定义的
userdetails服务
。这是一件很常见的事情,所以在文档中有一个部分是关于它的;请参阅中的“11自定义用户详细信息服务”部分

我不知道你为什么认为你需要不止一个角色课。只需为管理员和医生创建一个具有不同角色名称的
SecRole
实例,例如
newsecrole(authority:'role\u DOCTOR')。save()
newsecrole(authority:'role\u ADMIN')。save()

您可能根本不需要不同的用户类(至少不是出于安全考虑-出于非安全原因,您可能需要支持不同的属性)。只需创建
SecUser
实例,并授予它们所需的任何角色(使用
EndUserEndRole.create
),即角色医生或角色管理员


帮你自己一个忙,阅读插件文档,还有Spring安全文档-如果你对如何保护网站不满意,那么这些东西太重要了,无法实现。

谢谢@Burt Beckwith的回复我解决了问题,我的问题是我的类间关系。我已经成功地完成了我的一半项目,但我在原地罢工,请帮助我