权限控制 & 注销|学习笔记

简介: 快速学习权限控制 &注销

开发者学堂课程【SpringBoot 快速掌握 - 高级应用权限控制 &注销】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/613/detail/9314


权限控制 &注销

注销跟登陆一样,要用 http.logout(); 开启自动配置的注销功能:

可以去一下文档看一下这自动配置的注销功能做了哪些事

先点一个 setting ,实时的在 general 里边显示这个文档。

自动配置规则:

它会访问一个 logout 请求,这个表示一个用户退出来帮清空 session

1、访问 / Logout 表示用户注销,清空session

这相当于退出,可以在首页来写一个退出的表单,

比如在一个首页“请登录”表单下边写一个前面的</form>表单,这表单“ th:action” 来指定“@{}”当前项目下的“{/logout}”>由于要退出,所以说这个“method”默认还是这个“post”,这是我们这个 security 的规定,虽然是文档,但还没写

加上<input type=“submit” 写一个value=“注销”/>

</form> th:action=“@{/logout}”method=“post”>

<input type=“submit”value=“注销”/>注销成功了会返回“登录”页面,后边加一个“logout”

来测试一下注销能不能使用?

启动一下,访问刷新,这里有注销按钮,可以先登陆进来,随便点一个,“zhangsan”  

“123456”,登陆进来,都是可以的,它没有权限不能访问,

注销,注销完了只要退出成功它会返回“登陆页面”,后面会加一个  logout ,又是一个默认规则。

2、注销成功会返回 / login?logout 页面

Log 是之前默认生成的登录页,退出完成后还在登录页  

退出完成后还在首页:

这有一个 logout 来定制它的规则  

http.logout(“/”).logoutSuccessurl,退出成功后要去的地址,写一个 (“/”);注销成功以后来到首页 ,

注销功能:

进行一个测试,重新启动,刷新先来登录,登录进来后能访问的页面可以,不能的没有权限

注销以后,默认的是之前注销会回到登陆页面,现在来点注销已经回到了首页,再来访问,现在没有权限提示登录

两个功能:

第一个功能:

当用户没有登陆的时候来显示这句话“游客您好,如果想要查看武林秘籍 请登录 ,当用户登录以后再来显示“登录”按钮,包括用户信息.

第二个功能:

如果用户是张三登录,张三有 VIP1,VIP2 两个权限,只来显示“普通武功秘籍”和“高级武功密集”这两个页面.

如果是李四登录,他没有 VIP2  权限,就不显示“普通武功秘籍”部分内容

结合simlife 模板引擎提供的对 secrunity  的支持,包括文档里有的,这块就有安全相关的属性,比如“security:authorize”来进行授权:通过判断“isAuthenticated()”——是否认证通过,是否登录,成功后可以运用一些安全属性,

比如“sec:authentication来认证一些登陆信息,用户的名字“name”,用户的角色“Roles”,可以用 principal ,authorities 来得到这些,使用安全属性必须引入 Spring Security 和 Thymeleaf 的整合模块

在 pom 文件里引入一下,

首先来到 parents 的 dependencies 里,

有个安全的 springsecurity 的 washnumber ,它现在是213,变成适合搜索 thymeleaf 有 extras-springsecurity 来引入它,使用302这个版本来改一下它,pom  文件里,属性版本里生成302,要引入 dependency 整个复制,ctrl+c,ctrl+v 不用写版本了,删了,Thymeleaf 和 Springsecurity 就引进来了

在页面也要这么写,页面要引入 security 的名称空xmlns;sec\“http://www.thymeleaf.org/thymeleaf-extras-springsecurity

这句话在没登陆的时候写的,写一个<div sec:>,有一个 authorize 来授权,判断isAuthenticated()”认证,

没认证写一个</div>,没认证的情况下显示,

认证了再写一个<div sec:authoorize=  “ isAuthenticated()”>是否认证了,认证了就显示注销按钮 </form> th:action=“@{/logout}”method=“post”>同时显示是拿个用户<h2>xxx,您好,<您的角色有,xxx</h2> 这个人名“xxx”需要取出来,用span,span 里边就把人名写上,名字可以使用 sec:authentication 来取出名字

<h2>span sec:authentication= “name”></span>

您好,您的角色有:

<spansec:authentication= principal.authorities”</span/><h2>

有一个叫 principal 可以获取到 authorities,可以读取到所有角色

启动测试下,刷新,现在看到游客您好,登录状态显示,不同角色显示不同武功秘籍

<span sec:authentication= “”></span></h2>

也可以取出来,<span

认证了显示注销按钮,<div sec:authorize=isAuthenticated()”>

您好,您的角色有,<h2>xxx</h2> ,您好,这个角色有,<span sec></span

登录,返回主页,现在角色变成张三,显示VIP1 VIP2,普通武功秘籍我们用 div sec,我们来授权 authorites 用 hasRole 来判断你是否拥有一个角色“VIP1”,有VIP1角色可以显示武功秘籍1,

<div sec : authorizes”hasRole(‘VIP1’)”>

如果是VIP2

<div sec : authorizes”hasRole(‘VIP2’)”>

如果有VIP3,放上的就是“高级武功秘籍”

<div sec : authorizes”hasRole(‘VIP3’)”>

页面元素也可以根据角色的不同来判断显示

启动测试,默认没登陆,刷新登录一下,来到login页面,输入“zhangsan”,密码123456,登陆起来,张三登录起来只会显示张三能操作的,同样,李四登陆进来能操作的资源也是按他的角色在这显示的

重新点击注销,想登录点击“请登录”,面向的就是默认生成的登录页。

相关文章
|
10月前
|
数据安全/隐私保护
fastadmin是如何设置没有权限的用户不能访问某些页面的?
fastadmin是如何设置没有权限的用户不能访问某些页面的?
264 0
|
6天前
|
存储 前端开发
通过session实现用户的登录与登出功能
通过session实现用户的登录与登出功能
76 0
|
7月前
|
UED
路由权限登录后还保留上一个登录角色的权限,刷新一下就好了的解决方案
路由权限登录后还保留上一个登录角色的权限,刷新一下就好了的解决方案
39 0
|
安全 jenkins 持续交付
Jenkins 开启用户注册机制及用户权限设置
Jenkins 开启用户注册机制及用户权限设置
297 0
|
前端开发 安全 Java
SpringSecurity权限控制和注销
SpringSecurity权限控制和注销
|
安全 Java 数据库
注销功能|学习笔记
快速学习注销功能
62 0
注销功能|学习笔记
|
安全 前端开发 Java
登录 &amp;认证 &amp;授权|学习笔记
快速学习登录 &amp;认证 &amp;授权
63 0
登录 &amp;认证 &amp;授权|学习笔记
学习笔记jira项目23useauth切换登录和非登录信息
学习笔记jira项目23useauth切换登录和非登录信息
62 0
|
小程序 API 数据库
小程序中实现用户的登录与注册
小程序中实现用户的登录与注册
小程序中实现用户的登录与注册
|
数据库 数据安全/隐私保护
SpringMVC实现简单的用户管理系统——用户登录注册、修改密码、注销功能
SpringMVC实现简单的用户管理系统——用户登录注册、修改密码、注销功能
SpringMVC实现简单的用户管理系统——用户登录注册、修改密码、注销功能