我需要在订阅的基础上向用户提供角色。因此,我创建了一个如下所示的域:
class UserRoleValidity {
SecUser user
SecRole role
Date validFrom
Date validTo
static constraints = {
validFrom nullable: true, blank: false
validTo nullable: true, blank: false, validator: dateValidator
}
static def dateValidator = { val, obj ->
if(!val || (val && !obj.validFrom)) {
return true
}
val.equals(obj.validFrom) || val.after(obj.validFrom)
}
}
仅当当前日期在
validFrom
和validTo
范围内时,该角色才对用户有效。有更好的方法来解决这个问题吗? 最佳答案
如果您已经配置了spring安全性,则不需要创建单独的类来检查用户角色和验证之间的时间。只需对 Controller 操作使用“@Secured”注释
如下。
例如
// provide the roles which you want to validate
@Secured(['ROLE_ADMIN', 'ROLE_COORDINATOR'])
def validateTimeToPerformAction(){
/*
If the current time is between given range return true
Else return false
*/
}