首页 > 代码库 > Struts2的权限拦截代码
Struts2的权限拦截代码
package cn.erp.utils.interceptor; import cn.erp.auth.emp.vo.Emp; import cn.erp.auth.res.business.IResourceService; import cn.erp.auth.res.vo.Resource; import cn.erp.utils.exception.CustomException; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import org.apache.struts2.ServletActionContext; import java.util.List; /** * 描述:权限校验 */ public class AuthInterceptor extends AbstractInterceptor { @javax.annotation.Resource(name = IResourceService.SERVICE_NAME) private IResourceService resourceService; @Override public String intercept(ActionInvocation invocation) throws Exception { /** * 1.获取本次操作 * 2.从session中获取当前登录人信息 * 2.1如果当前登录人信息为null,跳转到登录页面 * 3 获取当前登录人可执行的所有操作(资源-->角色-->员工) * 4 判断当前登录人对应的所有可操作资源中是否包含本次操作 * 4.1 如果不包含,拦截 */ //1.获取本次操作 String actionName = invocation.getProxy().getAction().getClass().getName(); String methodName = invocation.getProxy().getMethod(); String allName = actionName+"."+methodName; //获取所有的资源信息,比对本次操作是否在资源全列表中,如果出现了,需要拦截,否则直接放行 List<Resource> rs = resourceService.getAll(); //list-->stringbuilder StringBuffer sbf = new StringBuffer(); for(Resource r :rs){ sbf.append(r.getUrl()).append(","); } //sbf中保存有需要校验的资源 if(sbf.indexOf(allName) < 0){ return invocation.invoke(); } //2.从session中获取当前登录人信息 Emp emp = (Emp) ServletActionContext.getRequest().getSession().getAttribute("emp"); //2.1如果当前登录人信息为null,跳转到登录页面 if(emp == null){ return "noLogin"; } //3 获取当前登录人可执行的所有操作(资源-->角色-->员工) List<Resource> resources = resourceService.getAllResourcesByEmpId(emp.getUuid()); for (Resource r :resources){ if(r.getUrl().equals(allName)){ //放行 return invocation.invoke(); } } throw new CustomException("抱歉,权限不足"); } }
Struts2的权限拦截代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。