Spring-Security笔记11 velocity 和spring-security整合 控制界面上元素的显示
2018-03-01 16:30
260 查看
1、在toolbox.xml中加入 <tool>
<key>security</key>
<scope>request</scope>
<class>com.fhzz.core.utils.SecurityVelocity</class>
</tool>
2、编写自定义的SecurityVelocitypackage com.fhzz.core.utils;
import java.util.Collection;
import java.util.Iterator;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
/**
* @author YangYi
*
*/
public class SecurityVelocity {
public boolean hasAnyRole(String... roles) {
return isRole(roles);
}
/***
* 前端传入数组参数
*
* @param viewRole
* 可变数组 1个或者多个
* @return 是否有权限
*/
private boolean isRole(String... roles) {
/** 前端数组为空 */
if (null == roles || roles.length <= 0) {
return false;
}
/** 获取当前用户登录对象 */
UserDetails userDetails = null;
try {
userDetails = (UserDetails) SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();
} catch (Exception e) {
return false;
}
if (null == userDetails) {
return false;
}
/** 获取当前用户登录对象所有权限 */
Collection<? extends GrantedAuthority> authorities = userDetails
.getAuthorities();
if (null == authorities) {
return false;
}
boolean flag = false;
Iterator<? extends GrantedAuthority> iter = authorities.iterator();
while (iter.hasNext()) {
GrantedAuthority grantedAuthority = iter.next();
/** 遍历前端列表的所有角色 */
for (String vr : roles) {
if (vr.equals(grantedAuthority.getAuthority())) {
flag = true;
break;
}
}
if (flag)
break; // 已经匹配上角色了则不再需要匹配其它角色。
}
return flag;
}
}
3、界面上的控制#if($security.hasAnyRole("AUTH_TO_INDEX"))
<p>您能看到这行字,表示拥有AUTH_TO_INDEX权限</p>
#end
#if(!$security.hasAnyRole("AUTH_SUPER"))
<p>您能看到这行字,表示没有AUTH_SUPER权限</p>
#end
<key>security</key>
<scope>request</scope>
<class>com.fhzz.core.utils.SecurityVelocity</class>
</tool>
2、编写自定义的SecurityVelocitypackage com.fhzz.core.utils;
import java.util.Collection;
import java.util.Iterator;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
/**
* @author YangYi
*
*/
public class SecurityVelocity {
public boolean hasAnyRole(String... roles) {
return isRole(roles);
}
/***
* 前端传入数组参数
*
* @param viewRole
* 可变数组 1个或者多个
* @return 是否有权限
*/
private boolean isRole(String... roles) {
/** 前端数组为空 */
if (null == roles || roles.length <= 0) {
return false;
}
/** 获取当前用户登录对象 */
UserDetails userDetails = null;
try {
userDetails = (UserDetails) SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();
} catch (Exception e) {
return false;
}
if (null == userDetails) {
return false;
}
/** 获取当前用户登录对象所有权限 */
Collection<? extends GrantedAuthority> authorities = userDetails
.getAuthorities();
if (null == authorities) {
return false;
}
boolean flag = false;
Iterator<? extends GrantedAuthority> iter = authorities.iterator();
while (iter.hasNext()) {
GrantedAuthority grantedAuthority = iter.next();
/** 遍历前端列表的所有角色 */
for (String vr : roles) {
if (vr.equals(grantedAuthority.getAuthority())) {
flag = true;
break;
}
}
if (flag)
break; // 已经匹配上角色了则不再需要匹配其它角色。
}
return flag;
}
}
3、界面上的控制#if($security.hasAnyRole("AUTH_TO_INDEX"))
<p>您能看到这行字,表示拥有AUTH_TO_INDEX权限</p>
#end
#if(!$security.hasAnyRole("AUTH_SUPER"))
<p>您能看到这行字,表示没有AUTH_SUPER权限</p>
#end
相关文章推荐
- 控制页面元素的显示和隐藏
- Spring MVC+Mybatis+Maven+Velocity+Mysql整合实例
- jquery控制元素的隐藏和显示的几种方法。
- spring2.5同velocity整合
- JQuery 控制元素显示隐藏
- js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
- CFX 和Spring 整合Ws Security 出现的问题
- springboot+security框架整合
- Spring 3之MVC & Security简单整合开发(三)
- jQuery控制元素显示、隐藏、切换、滑动的方法
- Struts,Hibernate,Spring整合开发中 DATE类型存入和显示问题
- AngularJS 中,通过 radio来控制元素的显示和隐藏,以及控制表单元素的 disabled
- div容器里子元素的显示和隐藏控制
- javascript 控制 页面元素 显示/隐藏
- js控制元素显示在屏幕固定位置,监听屏幕高度变化
- CAS Spring Security 3 整合配置
- HTML、css、js控制页面元素的显示及个人对浮动的理解
- Spring整合velocity
- 利用angular控制元素的显示和隐藏
- Struts 使用要点(概述,Spring与Struts的整合,输入校验与消息显示)