Grails中插件acegi-0.5.3.2安装后不能保存用户权限

  1. Grais中安装了acegi-0.5.3.2插件后,首先新增一些角色,然后新增用户的时候,进行角色的关联,一直关联不上。   
  2. 通关研究相关的页面和方法,即:create.gsp--用户添加页面、edit.gsp--用户修改页面、UserController中的addRoles方法做写修改,既实现了用户权限的关联。   
  3.   
  4. 第一步:   
  5. 修改grails-app\views\user\create.gsp中显示角色的代码   
  6.   
  7. 修改前:   
  8. "${authorityList}" >   
  9.        
  10.         "top" class="name" align="left">${it.authority.encodeAsHTML()}   
  11.         "left" >"${it.authority}"/>   
  12.        
  13.   
  14.   
  15. 修改后:   
  16. "${authorityList}" >   
  17.        
  18.         "top" class="name" align="left">${it.authority.encodeAsHTML()}   
  19.         "left" >"${it}"/>   
  20.        
  21.   
  22.   
  23. 第二步:   
  24. 修改grails-app\views\user\edit.gsp中显示角色的代码   
  25.   
  26. 修改前:   
  27. "entry" in="${roleMap}">   
  28.     
  29. ${entry.key.authority.encodeAsHTML()}   
  30.         "${entry.key.authority}" value="${entry.value}"/>   
  31.     
  32.   
  33.   
  34.   
  35. 修改后:   
  36. "entry" in="${roleMap}">   
  37.     
  38. ${entry.key.authority.encodeAsHTML()}   
  39.         "${entry.key}" value="${entry.value}"/>   
  40.     
  41.   
  42.   
  43.   
  44. 第三步:   
  45. 修改UserController中的addRoles方法   
  46. 备注:只所以要这样修改,是因为原来的写法,params获取不到‘ROLE’这个key,因为最初的写法只能获取到role相关的角色名称;修改后的写法是获取到Role这个实体,例如:demo.Race:1,on 根据'Race''on'判断是否选中,然后根据id进行角色的查询,最后赋予用户角色。   
  47.   
  48. 修改前:   
  49. private void addRoles(person) {   
  50.     for (String key in params.keySet()) {   
  51.         if (key.contains('ROLE') && 'on' == params.get(key)) {   
  52.             Role.findByAuthority(key).addToPeople(person)   
  53.         }   
  54.     }   
  55. }   
  56.   
  57. 修改后:   
  58. private void addRoles(person) {   
  59.     for (String key in params.keySet()) {   
  60.         if (key.contains('Role') && 'on' == params.get(key)) {   
  61.             Role.findById(key.split(':').getAt(1)).addToPeople(person)   
  62.         }   
  63.     }   
  64. }  

你可能感兴趣的:(Grails)