我在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问题 感谢
答案 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]
}
...
}