医药采购之操作权限拦截器
用户登录成功根据用户角色从数据库查询用户的操作权限(操作链接),可以进行权限拦截校验,并将操作权限存储至session中,在拦截器中获取用户的操作权限,用户请求url时,如果url在权限操作内放行可以继续操作,如果不在这个范围内拦截,提示用户:无此操作权限。
权限拦截
常用的有过虑器方式、框架拦截器(springmvc拦截,struts拦截器等)
配置公共访问地址
公开访问地址在resources/commonActions.properties文件中进行配置。
权限拦截流程:
权限拦截器
/*** 权限拦截器* @author Thinkpad**/
public class PermissionInterceptor implements HandlerInterceptor {//进入action方法前要执行@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {// TODO Auto-generated method stub//用户访问地址:String url = request.getRequestURI();//判断是否公开权限,如果是放行//获取公开地址 List<String> url_list_open= ResourcesUtil.gekeyList(Config.ANONYMOUS_ACTIONS);//便利公开的地址,如果用户访问的地址url包括了公开的地址,则说明用户访问的地址就是公开的地址for(String url_v:url_list_open){if(url.contains(url_v)){return true;//放行,用户继续访问}}//校验用户访问的是否是公共权限//获取公共权限地址 List<String> url_list= ResourcesUtil.gekeyList(Config.COMMON_ACTIONS);//便利公开的地址,如果用户访问的地址url包括了公开的地址,则说明用户访问的地址就是公开的地址for(String url_v:url_list){if(url.contains(url_v)){return true;//放行,用户继续访问}}//从session获取用户权限信息HttpSession session =request.getSession();ActiveUser activeUser = (ActiveUser)session.getAttribute(Config.ACTIVEUSER_KEY);//获取用户操作权限List<Operation> operation_list = activeUser.getOperationList();//校验用户访问地址是否在用户权限范围内for(Operation operation:operation_list){String url_operation = operation.getActionUrl();if(url.contains(url_operation)){return true;//放行,用户继续访问}} //跳转到页面request.getRequestDispatcher("/WEB-INF/jsp/base/refuse.jsp").forward(request, response);return false;}//action方法执行完但返回视图前执行此方法@Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// TODO Auto-generated method stub}//action方法执行完且视图返回(渲染)完成执行此方法@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception {// TODO Auto-generated method stub}}
在springmvc.xml文件中 配置拦截器链
<!-- 拦截器 --><mvc:interceptors><!-- 多个拦截器,顺序执行 --><!-- 用户身份校验的拦截器 --><mvc:interceptor><mvc:mapping path="/**" /><bean class="yycg.base.filter.LoginInterceptor"></bean></mvc:interceptor><!--用户权限拦截器 --><mvc:interceptor><mvc:mapping path="/**" /><bean class="yycg.base.filter.PermissionInterceptor"></bean></mvc:interceptor></mvc:interceptors>
拦截器抛出异常
由于本系统提交结果为json格式数据,页面上由js函数进行解析,如果这里拦截器重定向到一个页面会导致js函数无法正确解析,这里需要将:
request.getRequestDispatcher("/WEB-INF/jsp/base/refuse.jsp").forward(request, response);
//改为:
//105表示“没有操作权限”
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 105, null));
异常处理器需要在处理返回页面方法中添加如下处理代码:
医药采购之操作权限拦截器相关推荐
- 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题
问题描述 前端域名FE.com向后端域名BE.com分别请求访问优惠券的列表和提交新增的优惠券,API设计所用的Method分别为Get和Post,结果为前一次访问成功而后一次访问失败.这两次请求都是 ...
- filter导致跨域失效_【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题...
问题描述 前端域名FE.com向后端域名BE.com分别请求访问优惠券的列表和提交新增的优惠券,API设计所用的Method分别为Get和Post,结果为前一次访问成功而后一次访问失败.这两次请求都是 ...
- Struts2拦截器实例-权限拦截器
查看本例之前首先要大概了解struts2的理论知识(点击查看) 本例实现了一个权限拦截器! 需求:要求用户登录,且必须为指定用户名才可以查看系统中的某个视图资源,如果不满足这两个条件,系统直接转入登录 ...
- Spring Boot项目设置权限拦截器和过滤器
参考博文:https://blog.csdn.net/qq_30745307/article/details/80974407 目录 过滤器 Filter 作用 生命周期 示例代码 拦截器 Inter ...
- Struts2框架--学习笔记(下):OGNL表达式、值栈操作、拦截器、struts2标签、文件上传
一.OGNL概述:OGNL是一种表达式 (1)在struts2中操作值栈数据. (2)一般把ognl在struts2中操作,和struts2标签一起使用操作值栈. (3)ognl不是strut2的一部 ...
- shiro ajax权限拦截器,Shiro Ajax请求权限不满足,拦截后解决方案
Java模拟Http请求 Java模拟Http请求 使用的是org.apache.httpcomponents中的httpclient,因为post请求涉及到传输文件,所以需要使用httpmime这个 ...
- SpringMVC拦截器-用户登录权限控制代码实现2
在登陆页面输入用户名密码,点击登陆,通过用户名密码进行查询,如果登陆成功,则将用户信息实体存入session,然后跳转到首页,如果登陆失败则继续回到登陆页面 在UserController中编写登陆逻 ...
- SpringMVC拦截器-用户登录权限控制代码实现1
判断用户是否登录 本质:判断session中有没有user,如果没有登陆则先去登陆,如果已经登陆则直接放行访问目标资源 先编写拦截器如下: public class PrivilegeIntercep ...
- SpringBoot+拦截器+自定义异常+自定义注解+全局异常处理简单实现接口权限管理...
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_44102992/article/ details/107335702 前言 提到权限管理这块肯定很多人第一想到的 ...
最新文章
- KDD Cup 2021城市大脑赛题解析!报名倒计时3天
- k8s Service之ClusterIP示例
- mac m1下golang连接mysql极速入门
- 华为动态NAT小实验演示
- ASP.NET 2.0新特性视频教程下载
- html绘制圆形和弧形的代码,html5 canvas用来绘制弧形的代码实现
- 《iOS取证实战:调查、分析与移动安全》一3.6 iPhone操作系统
- STM32: HAL库开发概览
- linux环境c语言实现who,Linux下C语言编程环境的搭建1
- 触摸屏是怎么控制PLC的?
- 计算机音乐谱毛不易,中国内地流行男歌手毛不易歌曲简谱精选
- 避风港暗流涌动,优衣库优势不再
- 1314520用计算机怎么算,表白公式数学公式抖音 抖音1314520怎么计算,快用计算器表白?...
- node安装升级思考
- 云安全:Cloudstack云平台搭建详解及经验总结
- Android专项测试之崩溃测试(CPU)
- 神经注意力蒸馏NAD
- 网红警犬成长记:训导员“和它在一起时间比家人多”
- 很多大咖都在用,自媒体短视频文案怎么写?教你一条万能文案模板
- Windows远程桌面连接 云服务器 ICMP协议 防火墙