我需要在订阅的基础上向用户提供角色。因此,我创建了一个如下所示的域:

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)
    }
}

仅当当前日期在validFromvalidTo范围内时,该角色才对用户有效。有更好的方法来解决这个问题吗?

最佳答案

如果您已经配置了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
   */
}

08-27 06:37