Shiro过滤器配置(ShiroFilterFactoryBean)

这篇博客就是记录一下shiro过滤器的配置和一些注意事项

    /*** Shiro过滤器配置*/@Bean(name = "shiroFilter")public ShiroFilterFactoryBean shiroFilter() {ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();// Shiro的核心安全接口,这个属性是必须的shiroFilter.setSecurityManager(securityManager());
//        shiroFilter.setLoginUrl("");//身份认证失败,则跳转到登录页面的配置 没有登录的用户请求需要登录的
页面时自动跳转到登录页面,不是必须的属性,不输入地址的话会自动寻找项目web项目的根目录下的”/login.jsp”页面。//        shiroFilter.setSuccessUrl("");//登录成功默认跳转页面,不配置则跳转至”/”。如果登陆前点击的一个需
要登录的页面,则在登录自动跳转到那个需要登录的页面。不跳转到此。//        shiroFilter.setUnauthorizedUrl("");//没有权限默认跳转的页面
//        shiroFilter.setFilterChainDefinitions("");//filterChainDefinitions的配置顺序为自上而下,以
最上面的为准//自定义过滤//oauth2Map<String, Filter> filters = new HashMap<>(16);filters.put("oauth2", new Oauth2Filter());shiroFilter.setFilters(filters);//当运行一个Web应用程序时,Shiro将会创建一些有用的默认Filter实例,并自动地在[main]项中将它们置为可用自动地可用的默认的Filter实例是被DefaultFilter枚举类定义的,枚举的名称字段就是可供配置的名称/*** anon---------------org.apache.shiro.web.filter.authc.AnonymousFilter 没有参数,表示可以匿* 名使用。* authc--------------org.apache.shiro.web.filter.authc.FormAuthenticationFilter 表示需要认* 证(登录)才能使用,没有参数* authcBasic---------org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter 没有* 参数表示httpBasic认证* logout-------------org.apache.shiro.web.filter.authc.LogoutFilter* noSessionCreation--org.apache.shiro.web.filter.session.NoSessionCreationFilter* perms--------------org.apache.shiro.web.filter.authz.PermissionAuthorizationFilter 参数* 可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例* 如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通* 过,想当于isPermitedAll()方法。* port---------------org.apache.shiro.web.filter.authz.PortFilter port[8081],当请求的url的* 端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,* serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。* rest---------------org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter 根据请* 求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。* * roles--------------org.apache.shiro.web.filter.authz.RolesAuthorizationFilter 参数可以写* 多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如* admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。* * ssl----------------org.apache.shiro.web.filter.authz.SslFilter 没有参数,表示安全的url请* 求,协议为https* user---------------org.apache.shiro.web.filter.authz.UserFilter 没有参数表示必须存在用户,* 当登入操作时不做检查*//*** 通常可将这些过滤器分为两组* anon,authc,authcBasic,user是第一组认证过滤器* perms,port,rest,roles,ssl是第二组授权过滤器* 注意user和authc不同:当应用开启了rememberMe时,用户下次访问时可以是一个user,但绝不会是authc,因为* authc是需要重新认证的* user表示用户不一定已通过认证,只要曾被Shiro记住过登录状态的用户就可以正常发起请求,比如rememberMe * 说白了,以前的一个用户登录时开启了rememberMe,然后他关闭浏览器,下次再访问时他就是一个user,而不会authc*** 举几个例子*  /admin=authc,roles[admin]      表示用户必需已通过认证,并拥有admin角色才可以正常发* 起'/admin'请求*  /edit=authc,perms[admin:edit]  表示用户必需已通过认证,并拥有admin:edit权限才可以正常发* 起'/edit'请求*  /home=user     表示用户不一定需要已经通过认证,只需要曾经被Shiro记住过登录状态就可以正常发* 起'/home'请求*//*** 各默认过滤器常用如下(注意URL Pattern里用到的是两颗星,这样才能实现任意层次的全匹配)* /admins/**=anon             无参,表示可匿名使用,可以理解为匿名用户或游客*  /admins/user/**=authc       无参,表示需认证才能使用*  /admins/user/**=authcBasic  无参,表示httpBasic认证*  /admins/user/**=ssl         无参,表示安全的URL请求,协议为https*  /admins/user/**=perms[user:add:*]  参数可写多个,多参时必须加上引号,且参数之间用逗号分割,* 如/admins/user/**=perms["user:add:*,user:modify:*"]。当有多个参数时必须每个参数都通过才算通* 过,相当于isPermitedAll()方法*  /admins/user/**=port[8081] 当请求的URL端口不是8081时,跳转到schemal://serverName:8081?* queryString。其中schmal是协议http或https等,serverName是你访问的Host,8081是Port端* 口,queryString是你访问的URL里的?后面的参数*  /admins/user/**=rest[user] 根据请求的方法,相当于/admins/user/**=perms[user:method],其中* method为post,get,delete等*  /admins/user/**=roles[admin]  参数可写多个,多个时必须加上引号,且参数之间用逗号分割,* 如:/admins/user/**=roles["admin,guest"]。当有多个参数时必须每个参数都通过才算通过,相当于* hasAllRoles()方法**///Shiro验证URL时,URL匹配成功便不再继续匹配查找(所以要注意配置文件中的URL顺序,尤其在使用通配符时)// 配置不会被拦截的链接 顺序判断Map<String, String> filterMap = new LinkedHashMap<>();filterMap.put("/favicon.ico", "anon");filterMap.put("/webjars/**", "anon");filterMap.put("/web/**", "anon");filterMap.put("/login", "anon");//所有请求需要oauth2认证filterMap.put("/**", "oauth2");shiroFilter.setFilterChainDefinitionMap(filterMap);return shiroFilter;}

spring中 shiro logout 配置方式

  1. 普通的 实现自己的logout方法,取到Subject,然后logout。

  2. 使用shiro提供的logout filter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简述HTML语言概念,HTML语言的基本概念和基本格式.doc

HTML语言的基本概念和基本格式HTML语言的基本概念和基本格式当使用Netscape Navigator 与 Interne Explorer 这些浏览器在Interent上尽情遨游的时候&#xff0c;肯定会被丰富多彩的屏幕内容所吸引&#xff0c;而这些丰富多彩的内容背后&#xff0c;只是用一种简单的超文本标志语…

为什么线程池里的方法会执行两次_新手一看就懂的线程池

作者:码农田小齐来源:https://www.cnblogs.com/nycsde/p/14003888.html那相信大家也能感受到&#xff0c;其实用多线程是很麻烦的&#xff0c;包括线程的创建、销毁和调度等等&#xff0c;而且我们平时工作时好像也并没有这样来 new 一个线程&#xff0c;其实是因为很多框架的底…

vue学习笔记(超详细)

文章目录一. Vue基础认识Vue.jsVue安装方式Vue的MVVM二. Vue基础语法生命周期模板语法创建Vue, options可以放什么语法综合v-onv-for遍历数组v-model表单绑定v-model结合radio类型使用v-model结合checkbox类型使用v-model结合select类型使用值绑定修饰符检测数组更新计算属性 c…

华为鸿蒙热水器,美的华为跨界联合!搭载鸿蒙OS的美的产品双11上市

【宅秘新闻】在前段时间的华为开发者大会上&#xff0c;华为正式发布了鸿蒙OS 2.0。华为消费者业务软件部总裁王成录当时表示&#xff0c;美的等家电品牌很快就会推出基于鸿蒙OS 2.0的家电产品。11月11日&#xff0c;美的集团官方宣布搭载鸿蒙OS的美的产品在双十一惊喜上市。宅…

跳一跳python_微信跳一跳python怎么刷分?跳一跳python怎么使用?

最近&#xff0c;微信跳一跳小游戏可以说是火爆了微信好友圈&#xff0c;网上流传了Github大神分享的一个针对该游戏的开源项目&#xff0c;也就是一个Python脚本程序可以刷很高的分&#xff0c;下面就为大家带来跳一跳python使用教程。微信跳一跳python怎么刷分&#xff1f;微…

Eclipse构建Maven分包分模块项目并构建服务端

首先说一下Maven 模块结构&#xff1a; 一个简单的Maven模块结构是这样的&#xff1a; ---- app-parent 一个父项目(app-parent)聚合很多子项目(app-util,app-dao,app-service,app-web) |---- pom.xml (pom) | |-------- app-util | |-------- pom.xml (jar) | |-------- app-…

我们一起动手学大模型应用开发

大模型正逐步成为信息世界的新革命力量&#xff0c;其通过强大的自然语言理解、自然语言生成能力&#xff0c;为开发者提供了新的、更强大的应用开发选择。 随着国内外井喷式的大模型 API 服务开放&#xff0c;如何基于大模型 API 快速、便捷地开发具备更强能力、集成大模型的…

登陆页面html5代码qq,HTML5QQ登录的一篇代码分享

html5背景*{margin:0;padding:0;list-style-type:none;}a,img{border:0;}$(function () {if (!window.ActiveXObject && !!document.createElement("canvas").getContext) {$.getScript("http://im-img.qq.com/pcqq/js/200/cav.js?_1428576021379"…

unity 多台 显示器 控制_飞利浦292E2E评测丨宽屏显示器中的多面手

■本文来自中关村在线屏幕比例21:9或32:9的显示器&#xff0c;因为横向屏幕很长&#xff0c;所以被人形象的称为带鱼屏。相较于16:9的显示器&#xff0c;屏幕拥有更多显示面积&#xff0c;我们能获得更多信息&#xff0c;大大提升办公效率。同时带鱼屏打游戏和看电影时也能获得…

html 表格行排序,用客户端HTML表格排序对行进行分组

可用于逻辑上(不一定是语义上)可用的唯一元素是将相关的行分组在一起的是&#xff0c;因为它有效地具有多个元素。但是&#xff0c;由于实现tablesorter的方式&#xff0c;这在这种情况下不会有任何帮助。我可以看到在的tablesorter源代码一个未记录的配置选项 - appender - 这…

Idea 创建简单的SpringBoot 父子项目

背景 使用Idea 创建一个模块化的SpringBoot项目&#xff0c;但是发现Idea 创建父子项目的方式较Eclipse 较为不同&#xff0c;且Idea 创建的过程较Eclipse创建父子项目的过程复杂。 Eclipse 创建SpringBoot父子项目传送门 网上虽然有Idea创建SpringBoot父子项目&#xff0c;但…

python曲线拟合预测_用python做曲线拟合

大家好&#xff1f;我是Kepler哎学习&#xff0c;最近在工程中用到曲线拟合。一般我们都是用matlab来做&#xff0c;方便快捷。我们也可以尝试用python编写脚本来拟合数据&#xff0c;方便数据自动化处理。曲线拟合分为一般多项式拟合和指定函数拟合。准备工作&#xff1a;1.建…

微服务架构与SpringCloud

微服务架构简述 通常而言&#xff0c;微服务架构是一种架构模式或者说是一种架构风格&#xff0c;它提倡将单一应用程序划分成一组小的服务&#xff0c;每个服务运行在其独立的自己的进程中&#xff0c;服务之间互相协调、互相配合为用户提供最终价值。服务之间采用轻量级的通…

应用商店应用计算机,基于中国虹计算机的应用商店的设计与实现

摘要&#xff1a;随着互联网的不断发展,第三方应用商店的活跃用户数已达到数亿规模,而且仍然在不断增长,同时各终端厂商也陆续推出了适用于自家终端的应用商店.中国虹计划课题项目经过多年发展,其核心载体中国虹计算机也得到了大量的推广使用,但是中国虹计算机现有的云桌面应用…

python对字符串数组进行排序、依据字符数_Python进行数据的排序以及字符串的操作...

数据异常值的过滤在数据分析中&#xff0c;经常需要检测数据结构中的异常值。我们还是举个例子&#xff0c;先来创建一个包含三列的DataFrame对象&#xff0c;每一列都包含1000个随机数。可以用describe( )函数查看每一列的描述性统计量。例如&#xff0c;你可以会将比标准差大…

REST和RPC是什么东东?两者有什么区别

1 REST与RPC概念 什么是REST REST是一种架构风格&#xff0c;指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源&#xff0c;网络上一切皆资源。 REST并没有创造新的技术&#xff0c;组件或服务&#xff0c…

简述计算机进行远程桌面管理操作过程,服务器应用之“远程桌面连接”(操作篇)...

在上篇《服务器应用之“远程桌面连接”(部署篇) 》《服务器应用之“远程桌面连接”(建立篇) 》&#xff0c;我们介绍了远程桌面的部署和建立方法。在远程桌面连接成功后就可以进行一些远程桌面连接可以进行的计算机管理了。具体可以进行的远程桌面连接操作如下&#xff1a;1. 使…

未为dll加载任何符号_专家发现aspersky 和Trend Micro安全性解决方案中的DLL劫持问题...

SafeBreach的研究人员发现了Kaspersky安全连接、Trend Micro最大安全性和Autodesk桌面应用程序中的几个DLL劫持漏洞&#xff0c;黑客可以利用这些漏洞进行DLL预加载、代码执行和权限升级。第一个问题在卡巴斯基安全连接(KSDE) VPN客户端&#xff0c;跟踪为CVE-2019-15689&#…

什么是Eureka? 单机版Eureka如何使用?

Eureka 是什么&#xff1f; Eureka 是Spring Cloud的服务治理组件&#xff0c;有三个核心角色&#xff1a; 服务注册中心、服务提供者、服务消费者。Eureka 主管服务注册中心。 是Netflix的一个子模块&#xff0c;也是核心模块之一。Eureka是一个基于REST的服务&#xff0c;用…

ntko跨浏览器插件_继泄露版后,微软全新 Chrome 内核 Edge 浏览器你都测试过了吗?...

尽管微软的 Office 和 Windows 10 势头不错&#xff0c;但像 WP 手机、XBox 等方面似乎并未获得预期的成功。而先前为了替代老旧的 IE 浏览器&#xff0c;微软倾力开发的 Edge 也未见起色。不过微软也一直在努力变得更加开放&#xff0c;比如发布 VS for Mac、Office for Mac、…