Java权限降级_SpringBoot--- SpringSecurity进行注销权限控制的配置方法

环境

IDEA :2020.1

Maven:3.5.6

SpringBoot: 2.0.9 (与此前整合的版本2.3.3 不同,版本适配问题,为配合使用降级)

1、注销

这里也有一个前提问题需要注意,我们登录操作都是在开启防跨域攻击的环境下进行的。

毫无疑问,注销也是在这样的情况下进行的。

登录时我们提交表单,采用 POST 方法传输,通过使用 Thymeleaf 在 form 表单添加 th:action 元素,Thymeleaf 会自动为我们添加 _csrf 元素。

同样注销操作也是要带有 _csrf 参数认证的。

注销

我们把它做成一个表单按钮,同时采用 POST 方法传输,使用 SpringSecurity 提供的默认 /logout 方法进行登出注销。

开发者是不需要在 Controller 配置这个 /logout 方法处理的,和 /login 一样,这是由 SpringSecurity 提供的。

我们需要在之前登陆的配置类配置登出的各种属性即可。

.and() //这里采用链式编程

.logout()

.logoutSuccessUrl("/index") //注销成功后,调转的页面

/* .logoutUrl() 配置自己的注销URL,默认为 /logout

.invalidateHttpSession() 是否销毁session,默认ture

.deleteCookies() 删除指定的cookies

销毁session 相信很容易理解,一次对话,可以注销关闭,或者关闭页面会自动销毁。

记住我

cookies 需要重点介绍一下,这也是我们常用的记住我,在关闭页面或浏览器之后,下次打开页面时,是以之前登录的用户登录的。

为此,我们需要在登录表单增加记住我选项

tr>

Remember me on this computer.

同时在配置类开启记住我。

.and()

.rememberMe();

这里 checkbox 的 name 我们使用默认的 remember-me ,同样这一 cookies 的 name 也会被浏览器记住,这样我们只需要开启记住我即可使用。

如果不使用 name= "remember-me" ,而是使用其他 name 属性值,则需要配置指定,以便 SpringSecurity 接收是否记住我。

.and()

.rememberMe().rememberMeParameter("rememberme");

//接收前端自定义记住我的name,默认是remember-me

回到 deleteCookies() 方法的配置上,要销毁指定的 cookies ,我们要指定cookies 的名字即可。

.and()

.logout().logoutSuccessUrl("/index").deleteCookies("remember-me")

//销毁 name="remember-me"的 cookies

浏览器登录,选用记住我

cfb7257cfe20bbf934f83e77c49062d3.png

登录后, F12,查看 cookies

422fad3f31d49bed8c0dbe17aec1825d.png

第一个为 cookies,第二个则是此次会话的 session 对象。

可以看到 cookies 是有限期的,默认为 14 天。

点击注销。

8965c2fe9ead220c9ee228946868199b.png

由于配置了删除 cookies,cookies 已经被删除。

重新登录,这次没有选记住我,同时 session 也已经不是同一个,值已经改变了。

acea2b82d161aa05ea30d8fc1873663b.png

2、权限控制

同时,页面还有一个重要的需求没有实现。

没有某一权限的用户,不应该看到点击的入口(武功秘籍)。所谓得不到的最想要,你这不是摆着馋他嘛!可不能把他害咯。

对此,我们可以结合 Thymeleaf 和 SpringSecurity 实现哪些用户可以看到哪些内容。

首先,我们要导入 thymeleaf-springsecurity 整合的依赖

org.thymeleaf.extras

thymeleaf-extras-springsecurity4

3.0.4.RELEASE

同时还要在页面标签导入命名空间

xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity4">

在页面下把需要权限限制的内容包起来

游客您好,如果想查看武林秘籍

请登录

sec:authorize="!isAuthenticated()" 表示未登录认证的用户才可以查看到的内容。

Count:

注销

sec:authorize="isAuthenticated()" 表示已经登录认证的用户才可以查看到的内容。

sec:authentication="name" 表示获取认证的用户的用户名。

唉,别忘了,重点,有些武功秘籍不能让没有权限的用户看到,比如 level2 的,像什么太极拳,七伤拳,梯云纵。哈哈哈

高级武功秘籍

  • 太极拳
  • 七伤拳
  • 梯云纵

sec:authorize="hasRole('level2')" 规定只有 level 2 权限的用户才能查看。

其他的可以此类推做出配置。

除此之外,还可以有其他定制化配置,权限(role),权力(authority),IP ,是否允许(permission)。

spring security 5.1.6版本,从源码的角度可以看出使用不同的hasAuthority、hasRole方法判断权限时的区别,其实他们最终调用的都是hasAnyAuthorityName()方法,唯一不同的就是hasRole()在调用时,传递了前缀defaultRolePrefix,这就导致了他们两者之间比较的字符产生了差异。spring security应该想代表的意思就是权限字符加了ROLE_就是角色Role,如果没有加就是一个权限Authority。

00bb5b6c54ec9899e0c6e57b456755f6.png

SpringSecurity 都有为我们提供。

到此这篇关于SpringBoot--- SpringSecurity进行注销,权限控制的文章就介绍到这了,更多相关SpringSecurity注销 权限控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

升级和降级目管理中非常重要的概念,它们可以帮助你更好地控制目的进展。在本教程中,我们将从入门到精通,学习如何实现目的升级和降级。 ## 什么是目升级和降级目升级指的是将目提升到更高的级别,以实现更高的目标和要求。例如,将一个基本的网站升级为一个电子商务平台,或将一个简单的应用程序升级为一个复杂的企业级系统。 降级指的是将目降低到更低的级别,以适应更低的要求和限制。例如,将一个复杂的应用程序降级为一个简单的工具,或将一个大型的企业级系统降级为一个小型的简单系统。 ## 为什么需要目升级和降级目升级和降级可以帮助目管理人员更好地控制目的进展。通过升级和降级目管理人员可以根据目的实际情况,随时调整目的目标和要求,以确保目能够按时完成,并满足客户的需求和期望。 此外,目升级和降级还可以帮助目管理人员在目的不同阶段,实现目的不同目标和要求。例如,在目的初期阶段,可以使用简单的工具和技术来快速建立原型,而在目的后期阶段,可以使用更复杂的技术和工具来实现更高的目标和要求。 ## 如何实现目升级和降级? 实现目升级和降级需要以下步骤: 1. 确定目的目标和要求:在开始目升级和降级之前,需要明确目的目标和要求。这些目标和要求应该是可衡量的,并且应该能够满足客户的需求和期望。 2. 确定目的限制和资源:在确定目的目标和要求之后,需要确定目的限制和资源。这些限制和资源包括时间、预算、技术、人员等。 3. 定义目升级和降级的范围:在确定目的目标、要求、限制和资源之后,需要定义目升级和降级的范围。这个范围应该明确描述目的目标和要求,以及目升级和降级的过程。 4. 制定目升级和降级计划:在定义目升级和降级的范围之后,需要制定目升级和降级计划。这个计划应该包括具体的行动步骤、时间表、责任人等。 5. 实施目升级和降级计划:在制定目升级和降级计划之后,需要实施这个计划。这个过程包括执行行动步骤、监控目进展、解决问题等。 6. 评估目升级和降级的效果:在实施目升级和降级计划之后,需要评估这个计划的效果。这个过程包括收集反馈、分析数据、制定改进计划等。 ## 结论 目升级和降级目管理中非常重要的概念。通过升级和降级,可以帮助目管理人员更好地控制目的进展,满足客户的需求和期望。在实现目升级和降级时,需要明确目的目标和要求,确定目的限制和资源,定义目升级和降级的范围,制定目升级和降级计划,实施这个计划,并评估其效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值