一、三种不同的登录方式

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 不要暴露到地址栏里:

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

  1. 解读APP新一代验证登录方式——一键登录/免密认证

    近年来,验证领域迎来一个黑科技--用户在APP上进行账号注册或者号码绑定时,不需要接收短信验证码,直接可以以本机号码实现秒级验证.这种新颖且便捷的验证方式称为"一键认证". 一键认 ...

  2. 登录成功后怎么跳转页面html,怎么设置登录成功后跳转到相应的页面

    想要用angularjs实现的功能是 一进入就是一个登录页面(login.html),如果没有账号密码就注册,登录成功后跳转到相应的页面(shopcart.html) 碰到的问题 1.一进入页面没有显 ...

  3. 简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?

    简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么? 参考答案: (1)ftp有两种登录方式:匿名登录和授权登录.使用匿名登录时,用户名为:anonymous ...

  4. FTP的两种登录方式

    在讲两种登录方式之前,还是先说说FTP是什么?FTP 即 文件传输协议(英语:File Transfer Protocol 的缩写)是一个用于计算机网络上在客户端和服务器之间进行文件传输的应用层协议. ...

  5. 腾讯云服务器Linux镜像系统登录方法(SSH、标准登录方式和VNC登录)

    腾讯云Linux服务器如何登录?可以使用SSH客户端登录,也可以使用腾讯云官方提供的标准登录方式和VNC登录,腾讯云服务器网来详细说下腾讯云服务器Linux操作系统登录连接方法: 腾讯云Linux服务 ...

  6. Linux云服务器登录方式概述

    约束与限制 SSH方式登录要求该弹性云服务器已绑定弹性公网IP. 登录方式概述 只有运行中的弹性云服务器才允许用户登录. 登录Linux弹性云服务器的方式有:VNC登录.SSH方式登录. VNC方式登 ...

  7. 第三方登录(单点登录)

    一.什么是第三方登录 是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目. 本文将以QQ登录为例进行详解第三方登录的过程. 二.实现QQ登录 1.准备工作 接入QQ登录前,网站需 ...

  8. controll层跳转页面_js 控制页面跳转的5种方法

    第一种: window.location.href="login.jsp?backurl="+window.location.href; 第二种: alert("返回&q ...

  9. 微信小程序授权登录,跳转页面后在跳回首页不用再次登录

    小程序授权登录要使用wx.getUserProfile,获得用户投头像后,做一些页面跳转功能,但是如果需要再次跳转首页的话,小程序就会有回到登录前的状态,这样体验感会很差.要想不用再次登录,也不难,只 ...

  10. Django对接第三方认证登录平台(QQ登录)

    QQ登录开发文档 QQ互联开发者申请步骤 若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现. 相关链接: http://wiki.connect.qq.com/%E6%88%90%E4%B ...

最新文章

  1. 镜头评价指标及测试方法(二)—畸变与分辨率
  2. html5表单验证没有效果,HTML5表单验证特性(知识点小结)
  3. 以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)
  4. 基于Linux的虚拟主机搭建
  5. Taro+react开发(18)--定义变量值
  6. js读写php文件,在js中如何读取本地文件
  7. python3.6怎么安装numpy_Python3.6_安装numpy(2)
  8. xcodebuild构建时报错unknown error -1=ffffffffffffffff Command /bin/sh failed with exit code 1
  9. php-ews发送邮件,使用php-ews在特定日期之后收到电子邮件(Exchange Web服务)
  10. 数据库期末总结笔记(零基础)-第三章 关系数据库SQL
  11. 使用正则test方法遇到的问题
  12. Android集成三方浏览器之X5内核,从入门到精通
  13. 通过串口连接控制树莓派
  14. 费曼纪念日,霍金和蚁人下了一盘的“量子象棋”
  15. 【智能算法】PSO粒子群算法求解无约束多元函数最值(Java代码实现)
  16. 十分钟学懂Python入门基础3(中)
  17. Hive的行列转换(行转多列、多列转行、行转单列、单列转行)
  18. 对称加密与非对称加密,以及RSA的原理
  19. 在canvas上实现3D效果
  20. 14. Working with Dates and Times in R

热门文章

  1. quartus如何生成sof_JIC文件生成和固化详细步骤
  2. MarkDown图片缩放
  3. 蓝桥杯练习题(三):Python组之算法训练提高综合五十题
  4. 【晓风残月】ASP.NET DEMO 16: 通过GridView布局实现的多行批量更新
  5. 学习记录 - - 准备APS
  6. tensorflowpython32_Python tensorflow.python.framework.dtypes 模块,float32() 实例源码 - 编程字典...
  7. macpro如何清理磁盘空间_Mac怎么清理磁盘空间, 如何清理Mac内存?
  8. K_MEANS 聚类
  9. linux刷rockchip工具,Rockchip官方純linux,kernel4.4.0
  10. BindingResult总结以及注意事项