建立用户―角色―资源的关系

1 在系统已开始运行时首先需要创建用户角色,在创建用户角色时,用户角色名称默认以“ ROLE_ ”开头。
在用户注册时,系统文件 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 下的注释有效 .

你可能感兴趣的:(职场,grails,Acegi,休闲)