1、在系统已开始运行时首先需要创建用户角色,在创建用户角色时,用户角色名称默认以“ROLE_”开头。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在用户注册时,系统文件DefaultSecurityConfig.groovy中定义注册用户默认的用户角色为ROLE_USER:“defaultRole = 'ROLE_USER'”。如果需要更改注册用户默认的用户角色可以在SecurityConfig.groovy中,重新写明“defaultRole = '注册用户默认角色'”,但是要求填写的“注册用户默认角色”必须在Role管理中已经提前被保存了。
2、在注册时,在注册页面中可输入验证码信息,默认的注册码信息为大写的6位字母,黑色字体,在注册用户输入时不区分大小写。这些验证码的信息都在CaptchaController中的index闭包中定义的,在实际应用中可根据实际情况设定。
3、目前用户、角色信息已经存在。用户可自己注册,也可在User管理中进行角色修改,此时已建立用户——角色关系。
4、角色——资源关系
Acegi中管理角色——资源关系有3种方式:
1)
使用Requestmap的Domain类:
前提条件:在SecurityConfig.groovy文件中添加:
useRequestMapDomainClass = true
useControllerAnnotations = false //这个为true,则表示支持第3种方式,这2种方式不能并存。
在页面中添加新的Requestmap类,在填写url时一定要按小写字母的方式书写。
在保存成功后,以RORL_ADMIN的用户身份登录,在访问role下的请求,则会被拒绝。
2)在SecurityConfig.groovy(DefaultSecurityConfig.groovy)文件中定义静态字符串:
requestMapString = """
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/login/**=IS_AUTHENTICATED_ANONYMOUSLY
/admin/**=ROLE_USER
/book/test/**=IS_AUTHENTICATED_FULLY
/book/**=ROLE_SUPERVISOR
/**=IS_AUTHENTICATED_ANONYMOUSLY
"""
注:在写明url中必须将url小写才能正确运行,同时要求在SecurityConfig.groovy文件中写明:useRequestMapDomainClass =false(表示不支持Requestmap的Domain类方式)
3)在Controller 中使用注释
前提条件:如果要是使用这个方式必须在SecurityConfig.groovy文件中添加:
useRequestMapDomainClass = false
useControllerAnnotations = true
这个方式与Requestmap的Domain类不能一起使用。
在要限制的Controller类中使用注释:
class RoleController {
@Secured(['ROLE_ADMIN'])
def index = {
render 'Secure access only'
}
}
此时以角色ROLE_USER的用户身份登录,访问role时则会被拒绝.
注:当在Controller与Action同时使用此方式时,Action下的注释有效.
转载于:https://blog.51cto.com/bcptdtptp/319054