grails和spring security acl:仅显示域类的一些实例

时间:2013-08-27 08:34:37

标签: grails spring-security acl

我在Grails项目中使用Spring Security ACL来管理对我的应用程序的访问。我可以创建Admin和User以对应用程序具有不同的权限。 现在,我希望特定用户只能看到域类对象的一些实例。那就是:

遵循示例域类对象

class Patient
{
   String name;
   String surname;
   ...
}

假设有3个创建的Patient对象。 如果我使用

登录,我想要那个

username = test1

密码= TEST1

我只能看到属于此用户的患者。 我认为需要的是,当我创建一个新的患者时,存储该患者属于当前记录的用户。 我怎么能这样做?

编辑: 另一个问题是,如果我更改了要显示的id部分中的URL,我可以看到所有创建的患者。我想要,如果我手动更改URL,我会看到访问错误。有可能吗?

编辑2: 如何获取当前登录用户的角色?我已尝试使用以下代码How to get current user role with spring security plugin?,但我无法执行getAuthorities(),因为它告诉我它不存在

我在以下讨论中解决了EDIT2 grails exception: Tag [paginate] is missing required attribute [total] 我需要解决EDIT1问题 感谢

1 个答案:

答案 0 :(得分:0)

如果我理解你,你需要定义 belongsTo 。这将在数​​据库中创建从患者到用户的映射。

修改:获取当前登录用户

class SomeController {
  def authenticateService

  def list = { 
     def user = authenticateService.principal() 
     def username = user?.getUsername()
     .....
     .....
  } 
}

映射到控制器中的用户更改逻辑或使用events创建映射

修改:编辑创建操作:

class PatientController {
   def authenticateService
   ...
   def create() { 
      def patientInstance = new Patient(params)
      patientInstance.user = authenticateService.principal()
   ... 
      [patientInstance: patientInstance] 
   }
   ...
}