Liferay 用权限控制视图

简介:

 

需求:

在Liferay中,我们可以用其特有的权限机制来控制视图,比如我们想要页面上某些元素只对某种权限的用户开放。

 

解决:

其实Liferay中有内置的标记和对象可以轻松的达到这些要求,但是我们首先必须在页面上引入正确的标记库:

 
 
  1. <liferay-theme:defineObjects/> 

 

然后我们在页面上,就可以使用user 内置对象来正确的取得其权限了,我们把它封装在一段scriplet中:

 
 
  1. <!-- charles:determine whether the current has the admin privilege --> 
  2.  
  3. <% 
  4.  
  5.                 boolean hasAdminPrivilege= false
  6.  
  7.                 List<Role> userRoles = user.getRoles(); 
  8.  
  9.                 for (Role role :userRoles){ 
  10.  
  11.                                 if("Administrator".equals( role.getName().trim()) ){ 
  12.  
  13.                                                 hasAdminPrivilege=true
  14.  
  15.                                                 break
  16.  
  17.                                 } 
  18.  
  19.                 } 
  20.  
  21.                 
  22.  
  23. %> 

比如这段代码我们就是用user内置对象获取它所有的权限,然后判断它是否包含"Administrator"权限,然后吧这个布尔变量保存下来。

 

最后我们就用刚才的boolean变量来正确的进行视图控制,可以配合c标记库一起使用,比如以下代码就实现了只有Admin用户才可以看到"delete'按钮。

 
 
  1. <!-- charles:make conclusion that only the Administrator can view the delete button  --> 
  2.  
  3.   
  4.  
  5. <c:if test="<%=hasAdminPrivilege %>"> 
  6.  
  7.   
  8.  
  9.                 <!--  the first time when adminstrator goes to the view mode, he can't see the delete button --> 
  10.  
  11.                 <!--  because now nothing uploaded ,how it can delete from web server--> 
  12.  
  13.                 <!--  but after uploaded (heml_url !=null) ,then the delete button is visible to administrator --> 
  14.  
  15.                 <c:if test="${html_url != null }"> 
  16.  
  17.                 
  18.  
  19.                 <form action="<portlet:actionURL name="deleteInstance"/>" method="post" name="<portlet:namespace />" class="rs-form">               
  20.  
  21.                                       <input type="submit" value="Delete" class="del"/> 
  22.  
  23.                 </form> 
  24.  
  25.                 
  26.  
  27.                 </c:if> 
  28.  
  29.                 
  30.  
  31. </c:if> 




本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1004274,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
SQL XML Java
若依框架 --- 使用数据权限功能
若依框架 --- 使用数据权限功能
877 0
|
7月前
|
缓存 前端开发 JavaScript
若依框架中的权限控制逻辑 ---- 菜单
若依框架中的权限控制逻辑 ---- 菜单
688 0
odoo 为form表单视图添加chatter功能
odoo 为form表单视图添加chatter功能
173 0
|
JavaScript 前端开发 数据安全/隐私保护
Vue权限路由[菜单权限/按钮权限控制]
后台管理系统 主要的 是 ` 角色权限管理` , ` 按钮权限管理` 和 ` 菜单管理` , 其它的业务主要围绕在这个基础之上进行扩展,最终 构成了` 符合业务的后台管理系统`.
379 0
DRF修改权限、用户认证方式
修改权限、用户认证方式 在settings中全局配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.
|
JavaScript Python 前端开发
Django1.11 扩展User属性增加头像上传功能
Django自带的User模型没有头像和电话这两项属性,因此需要通过扩展User达到我们想要的效果,根据官方的文档,扩展新字段到User只需要用one-to-one模型即可。
7398 0
|
数据安全/隐私保护