Shiro(三)——三种不同的登录方式、RememberMe登录、Shiro 授权、其他配置(配置注销后的跳转页面、处理 JsessionID)

本文详细介绍了使用Shiro进行登录、无状态登录、RememberMe功能的实现及授权配置。通过三种登录方式的对比,展示了Shiro如何简化登录逻辑,并探讨了RememberMe在用户体验与安全性之间的平衡。此外,还讲解了Shiro的授权机制,包括角色权限的设定与访问控制,并给出了相关代码示例。
摘要由CSDN通过智能技术生成

一、三种不同的登录方式

1、第一种登录方式

上一篇博客用的就是第一种登录方式,自己定义登录逻辑,自己定义页面,错误信息等,就是第一种登录方式了。

2、第二种登录方式——无状态登录

这是一种比较老的登录方式了。登录网站会弹框让你输入账号密码。这种一般就是属于 httpBasic 登录,然后把账号密码放在请求头信息中,传输到服务端解析。

这种登录有比较大的弊端:
一是不安全,因为信息都放在请求头中了;
二是这种登录是无状态登录,没有会话,也就没有 cookie 了,然后就是登录后账号密码会一直放在请求头中,不管访问哪个接口,都会一直带着这些信息去访问。衍生出的问题就是没法注销,因为信息一直放在请求头中,除非关闭浏览器再打开再登录。

这种登录方式的配置很简单:
在这里插入图片描述
把登录方式改成上图中画红线的部分就是了。

接着运行服务器:
这种就是前面说的登录后弹出的框框了。
在这里插入图片描述

这就是请求头中保存的信息,用的是 base64编码的方式:
在这里插入图片描述

Base64 解码,Java 代码中也有:
在这里插入图片描述
这时候后续再进入登录页面,可以发现请求头中已经有包含的账号信息了:
在这里插入图片描述

3、第三种登录方式——Shiro提供的默认登陆方式

第三种登陆方式,不需要自己写登陆逻辑,因为 Shiro 默认就是这个登录逻辑。但是登录成功跟登录失败还是要自己处理,下面截图是处理:
在这里插入图片描述
上图中最后返回的是逻辑视图名。

然后在 Spring 配置页面配置登陆成功后跳转的页面;并且登陆成功之后也不走 doLogin 了,这里也需要改,
在这里插入图片描述

在这里插入图片描述

二、RememberMe登录

1、RememberMe介绍

比如一些电商网站,像是某东,某宝,关掉浏览器之后的一段时间内再打开页面,依然还是能浏览的,但是如果要下单的时候,还是要求要登录的;这种功能就是 RememberMe。所以我们可以把操作分为两类,一类是敏感操作,另一类是不敏感操作;如果操作的是不敏感操作,则可以浏览,如果是要操作敏感操作,则自动跳转登录页面。开启这个功能之后,虽然用户体验会变好,但是安全性会变差,但是这种变差的幅度在可接受范围内。这种时间一般默认是两周。

前端加一个 记住我:
在这里插入图片描述

接着后端代码:
后端代码多接收一个参数,然后做判断:
在这里插入图片描述
然后配置:
在这里插入图片描述
接着就能成功访问,如果不勾选记住我,当关掉浏览器时,是不能直接进入 index 页面的;如果勾选了,则登录成功后关掉浏览器,再打开是可以直接进入 index 页面的。

2、注销

在shiro里面,注销很简单,不需要自己写注销的接口,也没有 session之类的东西:
前端:
在这里插入图片描述

配置:
在这里插入图片描述这么写,就完成了。

三、Shiro 授权

对于安全管理框架来讲,主要就两个功能,认证跟授权,认证就是登录。授权就是给某些角色权限,比如超级管理员能访问所有页面,但是有的权限不够的普通角色就不能访问。

1、授权

a、定义接口

现在定义三个接口:
在这里插入图片描述

b、配置授权(拥有某个角色或同时拥有才能访问)

然后配置文件:
在这里插入图片描述

然后前面写的 MyRealm 需要更改一个继承的类,但是原本写的代码不需要动:
在这里插入图片描述
然后重写一个方法:
在这里插入图片描述
到目前为止,就写的差不多了,当访问某个路径的时候,就会调取这个方法获取角色,如果有就允许访问,看到页面,如果没有就不允许访问。我们可以写一个当权限不足时返回的页面:
在这里插入图片描述配置:
在这里插入图片描述
然后看下数据库:
在这里插入图片描述

在这里插入图片描述
那么此时就完成了:
zs 只能访问普通页面,ls 能访问 admin 的页面,ww 才能访问 user 页面。

c、配置授权(拥有某些角色中的一个就能访问)

目前为止的访问可以发现都是必须同时满足要求才能访问,比如当有两个角色的时候,就必须同时拥有两个角色才能访问,如果想要 user 或者 admin 中的一个角色就能访问呢:

查看源码可以发现,只需要重写某个方法即可:
在这里插入图片描述
在这里插入图片描述
接着注册:
在这里插入图片描述
这么弄完就可以了。

三、其他配置

1、配置注销后的跳转页面

一般注销之后跳转的是登录页面,但这里默认的路径是 /,参考下方配置修改:
在这里插入图片描述

2、处理 JsessionID

有时候发现地址栏会带有 JsessionID,把 JsessionID 暴露到地址栏里会有不安全的问题,所以配置将 JsessionID 不要暴露到地址栏里:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值