栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、三种不同的登录方式 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 不要暴露到地址栏里:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737138.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号