集成方法

  shiro与web集成,主要是通过配置一个ShiroFilter拦截所有URL,其中ShiroFilter类似于SpringMVC的前端控制器,是所有请求入口点,负责根据配置(如ini配置文件),判断请求进入URL是否需要登录/权限等工作。


集成步骤

  1、导入相关jar包
  2、web.xml配置ShiroFilter以拦截请求
  3、配置shiro.int文件


shiro默认的过滤器

这些默认的拦截器会自动注册

过滤器简称  对应的java类 用法

anon,authcBasic,auchc,user是认证过滤器
perms,roles,ssl,rest,port是授权过滤器

authc 拦截器主要属性:
usernameParam ----> 表单提交的用户名参数名(username)
passwordParam ----> 表单提交的密码参数名(password)
rememberMeParam ----> 记住我(rmemberMe)
loginUrl ----> 登陆页面地址(/login.jsp)
successUrl ----> 登陆成功后默认的重定向地址
failureKeyAttribute ----> 登陆失败后错误信息存储key(shiroLoginFailure)

anon org.apache.shiro.web.filter.authc.AnonymousFilter 匿名拦截器,即不登陆就可以访问,一般用于静态资源过滤
authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter 需要认证
authcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter  
roles org.apache.shiro.web.filter.authc.RolesAuthorizationFilter 角色授权拦截器
perms org.apache.shiro.web.filter.authc.PermissionsAuthorizationFilter 权限授权拦截器
user org.apache.shiro.web.filter.authc.UserFilter  
logout org.apache.shiro.web.filter.authc.LogoutFilter 退出拦截器
port org.apache.shiro.web.filter.authc.PortFilter  示例“/test=port[80]”,如果用户访问该页面是非80,将自动将请求端口改为80并重定向到该80端口
rest org.apache.shiro.web.filter.authc.HttpMethodPermissionFilter  
ssl org.apache.shiro.web.filter.authc.SslFilter  SSL拦截器,只有请求协议是https才能通过;否则自动跳转会https端口(443)


在ini配置文件中设置默认拦截器的属性

#如果身份验证没有通过,就跳转到loginUrl指定的页面
authc.loginUrl=/login
#如果用户没有角色,就跳转到unauthorizedUrl指定的页面
roles.unauthorizedUrl=/nopermission.jsp
#如果用户没有权限,就跳转到unauthorizedUrl指定的页面
perms.unauthorizedUrl=/nopermission.jsp #另外如果某个拦截器不想使用了可以直接通过如下配置直接禁用:
#perms.enabled=false 

在ini配置文件中设置访问权限

shiro web 集成的更多相关文章

  1. Shiro Web集成及拦截器机制(四)

    Shiro与 Web 集成 Shiro 提供了与 Web 集成的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的 URL,然后进行相应的控制,ShiroFilter 类似于如 Str ...

  2. Shiro学习笔记(5)——web集成

    Web集成 shiro配置文件shiroini 界面 webxml最关键 Servlet 測试 基于 Basic 的拦截器身份验证 Web集成 大多数情况.web项目都会集成spring.shiro在 ...

  3. Apache Shiro:【1】Shiro基础及Web集成

    Apache Shiro:[1]Shiro基础及Web集成 Apache Shiro是什么 Apache Shiro是一个强大且易于使用的Java安全框架,提供了认证.授权.加密.会话管理,与spri ...

  4. 2017.2.12 开涛shiro教程-第七章-与Web集成

    2017.2.9 开涛shiro教程-第七章-与Web集成(一) 原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. ...

  5. 第七章 与Web集成——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2024723 目录贴:跟我学Shiro目录贴 Shiro提供了与Web集成的支持,其通过一个Sh ...

  6. (九)shiro之web集成

    Url 匹配方式? 匹配一个字符 /admin? 可以匹配/admin1 或者/admin2 但是不能匹配/admin12 或者/admin* 匹配零个或者一个或者多个字符 /admin* 可以匹配 ...

  7. spring-boot+mybatisPlus+shiro的集成demo 我用了5天

    spring-boot + mybatis-plus + shiro 的集成demo我用了五天 关于shiro框架,我还是从飞机哪里听来的,就连小贱都知道,可我母鸡啊.简单百度了下,结论很好上手,比s ...

  8. 基于spring框架的apache shiro简单集成

    关于项目的安全保护,我一直想找一个简单配置就能达到目的的方法,自从接触了shiro,这个目标总算达成了,以下结合我使用shiro的经验,谈谈比较轻便地集成该功能. 首先我们先了解一下shiro是什么. ...

  9. Shiro - web应用

    先不谈Spring,首先试着用最简易的方式将Shiro集成到web应用. 即使用一些Servlet ContextListener.Filter.ini这些简单的配置完成与web应用的集成. web. ...

随机推荐

  1. nodejs(三) --- nodejs进程与子进程

    嗯,对于node的学习还远远不够,这里先做一个简单的api的记录,后续深入学习. 第一部分:nodejs中的全局对象之process进程对象 在node中的全局对象是global,相当于浏览器中的wi ...

  2. Javascript中Date对象的格式化

    很多语言中都带有日期的格式化函数,而Javascript中却没有提供类似的方法.之前从某位前人的帖子中发现了下面的代码,感觉非常简洁,存留备用. /** * 时间对象的格式化; */ Date.pro ...

  3. 使用SMTP发送邮件

    先定义一个邮件实体: public class EntityMail { /// <summary> /// 发件人 /// </summary> public string ...

  4. Android中实时预览UI和编写UI的各种技巧

    一.啰嗦 之前有读者反馈说,你搞这个所谓的最佳实践,每篇文章最后就给了一个库,感觉不是很高大上.其实,我在写这个系列之初就有想过这个问题.我的目的是:给出最实用的库来帮助我们开发,并且尽可能地说明这个 ...

  5. linux解压.tar.xz压缩包

    今天,打算更新一下node版本(v6.11.1 -> v8.9.4),结果阿里云服务器使用nvm命令下载慢如牛,于是直接在node官网找到合适的v8.9.4压缩包下载到电脑里,然后up到阿里云服 ...

  6. 用css实现在横线中间插入文字

    在一些登录或者注册界面中常常可看到,一个大框框上面的横线中有插入文字,大概示意图如下: 这种现象其实是相对位置作用的结果,可以通过相对定位,是某元素恰好出现在div的边框上. position: re ...

  7. For update带来的思考

    For update or not 起源 ​ 之所以想写这个专题,是因为最近在做一个抢占任务的实现.假设数据库很多个任务,在抢占发生之前任务的状态都是FREE.现在假设同时有一堆抢占线程开始工作,抢占 ...

  8. 小白学习之Code First(四)

    code first :约定大于配置(通过配置实体重写约定) 通过两种方式配置实体:DataAnnotations      Fluent Api System.ComponentModel.Data ...

  9. Jquery Easy UI初步学习(二)datagrid的使用

    第一篇学的是做一个管理的外框,接着就是数据datagrid绑定了,这里我用asp.net mvc3来做的,主要就是熟悉属性.方法. 打开easyui的demo 就可以看到如下一段代码: 和上篇一样cl ...

  10. [javaSE] 网络编程(TCP通信)

    客户端A与服务端建立通信,服务端获取到客户端A的Socket对象,通过这个通路进行通信 客户端: 获取Socket对象,new出来,创建客户端的Socket服务,构造参数:Sting主机,int 端口 ...