用户登录成功根据用户角色从数据库查询用户的操作权限(操作链接),可以进行权限拦截校验,并将操作权限存储至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));

异常处理器需要在处理返回页面方法中添加如下处理代码:

医药采购之操作权限拦截器相关推荐

  1. 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题

    问题描述 前端域名FE.com向后端域名BE.com分别请求访问优惠券的列表和提交新增的优惠券,API设计所用的Method分别为Get和Post,结果为前一次访问成功而后一次访问失败.这两次请求都是 ...

  2. filter导致跨域失效_【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题...

    问题描述 前端域名FE.com向后端域名BE.com分别请求访问优惠券的列表和提交新增的优惠券,API设计所用的Method分别为Get和Post,结果为前一次访问成功而后一次访问失败.这两次请求都是 ...

  3. Struts2拦截器实例-权限拦截器

    查看本例之前首先要大概了解struts2的理论知识(点击查看) 本例实现了一个权限拦截器! 需求:要求用户登录,且必须为指定用户名才可以查看系统中的某个视图资源,如果不满足这两个条件,系统直接转入登录 ...

  4. Spring Boot项目设置权限拦截器和过滤器

    参考博文:https://blog.csdn.net/qq_30745307/article/details/80974407 目录 过滤器 Filter 作用 生命周期 示例代码 拦截器 Inter ...

  5. Struts2框架--学习笔记(下):OGNL表达式、值栈操作、拦截器、struts2标签、文件上传

    一.OGNL概述:OGNL是一种表达式 (1)在struts2中操作值栈数据. (2)一般把ognl在struts2中操作,和struts2标签一起使用操作值栈. (3)ognl不是strut2的一部 ...

  6. shiro ajax权限拦截器,Shiro Ajax请求权限不满足,拦截后解决方案

    Java模拟Http请求 Java模拟Http请求 使用的是org.apache.httpcomponents中的httpclient,因为post请求涉及到传输文件,所以需要使用httpmime这个 ...

  7. SpringMVC拦截器-用户登录权限控制代码实现2

    在登陆页面输入用户名密码,点击登陆,通过用户名密码进行查询,如果登陆成功,则将用户信息实体存入session,然后跳转到首页,如果登陆失败则继续回到登陆页面 在UserController中编写登陆逻 ...

  8. SpringMVC拦截器-用户登录权限控制代码实现1

    判断用户是否登录 本质:判断session中有没有user,如果没有登陆则先去登陆,如果已经登陆则直接放行访问目标资源 先编写拦截器如下: public class PrivilegeIntercep ...

  9. SpringBoot+拦截器+自定义异常+自定义注解+全局异常处理简单实现接口权限管理...

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_44102992/article/ details/107335702 前言 提到权限管理这块肯定很多人第一想到的 ...

最新文章

  1. KDD Cup 2021城市大脑赛题解析!报名倒计时3天
  2. k8s Service之ClusterIP示例
  3. mac m1下golang连接mysql极速入门
  4. 华为动态NAT小实验演示
  5. ASP.NET 2.0新特性视频教程下载
  6. html绘制圆形和弧形的代码,html5 canvas用来绘制弧形的代码实现
  7. 《iOS取证实战:调查、分析与移动安全》一3.6 iPhone操作系统
  8. STM32: HAL库开发概览
  9. linux环境c语言实现who,Linux下C语言编程环境的搭建1
  10. 触摸屏是怎么控制PLC的?
  11. 计算机音乐谱毛不易,中国内地流行男歌手毛不易歌曲简谱精选
  12. 避风港暗流涌动,优衣库优势不再
  13. 1314520用计算机怎么算,表白公式数学公式抖音 抖音1314520怎么计算,快用计算器表白?...
  14. node安装升级思考
  15. 云安全:Cloudstack云平台搭建详解及经验总结
  16. Android专项测试之崩溃测试(CPU)
  17. 神经注意力蒸馏NAD
  18. 网红警犬成长记:训导员“和它在一起时间比家人多”
  19. 很多大咖都在用,自媒体短视频文案怎么写?教你一条万能文案模板
  20. Windows远程桌面连接 云服务器 ICMP协议 防火墙

热门文章

  1. JAVA毕设项目面向餐饮行业的会员营销系统(java+VUE+Mybatis+Maven+Mysql)
  2. Linux常用命令:编辑器
  3. Unity打开后,使用VR设备耳机的时候,有杂音的解决办法!
  4. 帝国cms后台登录用户名账号密码忘记了怎么重置找回?
  5. MySQL数据库入门练习100句
  6. 弘辽科技:淘宝s级大促是什么等级?要注意什么?
  7. Java导出csv修正时间格式
  8. Linux的zip命令参数详解
  9. 少女前线一直提示服务器维护,少女前线进不去黑屏怎么办 闪退解决方法
  10. git关于创建/删除分支常用命令