<span style="font-family: Arial, Helvetica, sans-serif;">在系统中使用shiro进行权限管理,当用户訪问没有权限的资源时会跳转到指定的登录url。

</span>

可是假设系统中支持手机app。手机訪问时没有使用session进行登录凭证管理。而是使用token,有两种解决方法:

1:支持手机client訪问的资源在权限配置中配置成anon

2:实现自己定义认证拦截器,对用户请求资源进行认证

显然第一种方法不适用,这些资源应该仅仅能让我们自己的app进行訪问。

第二中实现方式:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"><property name="securityManager" ref="securityManager" /><!-- 登录的页面 --><property name="loginUrl" value="/login/login.jsp" /><property name="successUrl" value="/success.jsp" /><property name="unauthorizedUrl" value="/error.jsp" /><property name="filterChainDefinitions"><value>/android.html**=anon/pets/android**=android/pets/login/**=anon/**=authc</value></property><property name="filters"><map><entry key="android"><bean class="com.pets.shiro.filter.MobileTokenAuthentication"></bean></entry><entry key="authc"><bean class="com.pets.shiro.filter.LoginAuthenticationFilter"></bean><!-- <bean class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"></bean> --></entry></map></property></bean>
/pets/android**=android 指定认证的拦截器,这里是自己定义的拦截器
<pre name="code" class="java">/*** 移动设备认证基类。提供未登录用户操作认证权限** 2014年7月8日*/
public abstract class AbstractMobileAuthenticationFilter extendsAuthenticationFilter {public static final String TOKEN = "token";protected Logger log = Logger.getLogger(getClass());@Overrideprotected boolean onAccessDenied(ServletRequest request,ServletResponse response) throws Exception {log.info("安卓用户进入校验!

" + getLoginUrl()); HttpServletRequest req = (HttpServletRequest) request; String token = req.getParameter(TOKEN); if (isAccess(token)) { return onAccessSuccess(req, (HttpServletResponse) response); } return onAccessFail(req, (HttpServletResponse) response); } /** * 推断token的合法性 * * @param token * @return */ public abstract boolean isAccess(String token); /** * 认证成功进行的操作处理 * * @param request * @param response * @return true 继续兴许处理。false 不须要兴许处理 */ public abstract boolean onAccessSuccess(HttpServletRequest request, HttpServletResponse response); /** * 认证失败时处理结果 * * @param request * @param response * @return true 继续兴许处理。false 不须要兴许处理 */ public abstract boolean onAccessFail(HttpServletRequest request, HttpServletResponse response); }

仅仅须要重写onAccessDenied方法,进行token推断!

转载于:https://www.cnblogs.com/wzzkaifa/p/7237835.html

shiro 实现自己定义权限规则校验相关推荐

  1. shiro、基于url权限管理、超详细

    如果需要本篇博客内容的代码!请到我的博客下载中心去下载   https://download.csdn.net/download/qq_36125138/10719559 项目运行图: 权限管理原理知 ...

  2. 将 Shiro 作为应用的权限基础

    Shiro 是 Java 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势.本文介绍了 Shiro 的 ...

  3. P15-Windows与网络基础-NTFS权限规则

    该系列为"蜗牛学苑-网络安全"笔记,跟随课程加入自己见解,同时也为项目中碰到一些问题做了解答 大纲 NTFS的权限规则 1.背景:如何查看用户对于某文件.文件夹的全部权限 2.权限 ...

  4. Windows与网络基础:NTFS权限规则和本地安全策略

    目录 一.NTFS权限规则 1.权限累加 2.拒绝权限 3.继承权限 4.特殊权限 4.1.读取权限 4.2.更改权限 4.3.取得所有权 二.本地安全策略 1.本地安全策略的基本内容 1.1.概念 ...

  5. 超详细!附源码!SpringBoot+shiro+mybatis+Thymeleaf实现权限登录系统

    最近在做一个期末作品,就是使用ssm+thymeleaf+vue+shiro完成一个具有权限登录,且能实现用户信息增删查改的这么一个项目,下面仅仅是实现权限认证和登录.为什么我选shiro,而不选sp ...

  6. vue3+ts+element-plus密码强弱校验+密码自定义规则校验

    一.效果描述和结果展示: 密码强弱 校验是根据以下四种规则来判断划分的5个等级. 长度 字母 数字 符号 密码规则 校验是根据以下四种规则来进行校验. 是否包含用户名: 是否包含3个及以上相同或连续的 ...

  7. MVC验证05-自定义验证规则、验证2个属性值不等

    本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证   MVC验证02-自定义验证规则.邮件验证   MVC验证03 ...

  8. CSLA.NET权限规则的困惑

    CSLA.NET中的权限规则是通过AuthorizationRules类实现的,如AllowGet()方法,就是允许读取. 以下是我在项目中的使用,是一个品牌的不可编辑类: //页面的菜单代码 pub ...

  9. sql server定义_在SQL Server中查看定义权限

    sql server定义 We have various database objects such as view, stored procedures, triggers, functions a ...

最新文章

  1. intel lock汇编指令保障有序性
  2. appscan无法连接到服务器_对于csgo无法连接到任意服务器解决办法
  3. git如何上传所有的新文件
  4. Effective Java之接口优先于反射机制(五十三)
  5. 如何限制SELECT-OPTIONS的选择屏幕的OPTION
  6. POJ 1002 487-3279
  7. (11)verilog语言编写加减乘除
  8. 如何退订语音包_怎么关闭语音助手 - 卡饭网
  9. 【Codeforces】Gym 101173B Bipartite Blanket 霍尔定理+状压DP
  10. 一元稀疏多项式加法运算
  11. 离散傅里叶变换(DFT)/快速傅里叶变换(FFT)matlab
  12. 广州蓝景分享—「web前端素材」使用CSS动画效果(下)
  13. 湿淀粉 - 搜搜百科
  14. 云之家集成第三方应用
  15. Python函数调用的九大方法,鲜为人知
  16. 二代身份证读取 中控ID180 二三代身份证阅读器 Vue版本
  17. 学习记录:二层网络环路相关
  18. 求求大佬救救孩子吧。按照书上敲的python爬取百度网盘权利的游戏案例,结果报错,其他都不报错,生成的txt文件也没有内容
  19. List 过滤、排序、校验等处理方法
  20. SAP VL02N为某个交货单PGI报错说HU和序列号里的标识符不一致问题之对策II

热门文章

  1. 【BZOJ5005】乒乓游戏 [线段树][并查集]
  2. 说一说windows原生docker及windows Server Container , Hyper Container 之间的关系(学习总结)...
  3. NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现-
  4. Robbin关于App class loader的总结(转帖)
  5. git 中遇到的错误及解决方法
  6. js中短路运算符 ||
  7. C++---set/multiset用法介绍
  8. 计算机中定义事物各种特点的术语,计算机科学中具有特殊含义或易溷淆的术语辨析(2版).doc...
  9. python vb 哪个好学_最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...
  10. 女生长胖是一种什么样的体验?