Spring与Shiro整合 登陆操作
Spring与Shiro整合 登陆操作
作者 : Stanley 罗昊
【转载请注明出处和署名,谢谢!】
编写登陆Controller方法

讲解:
首先,如果你登陆失败的时候,它会把你的异常信息丢到一个叫shirologinFailure这个值里面,这个值对应上我们的请求作用域中,它的key值就是shirologinFailure;
我们从中可以获取到异常的名称(异常错误信息)我们用string来接收异常信息exceptionClassName,然后我们就可以开始判断,如果exceptionClassName !=null的时候,那就表明登陆失败了,登陆失败之后,我们就直接return “forward/login.jsp”;就直接给他跳转到登陆页面,让用户继续登陆;
那我们登陆成功呢?注意看下方注解:
该方法不处理登陆成功的情况,会自动帮我们跳转到上一个操作路径,所以登陆失败了就会进入到这个方法中返回一个登陆页面,如果成功,压根就不会进入这个方法,而是直接跳转到我们之前所保留的那个登陆路径;
登陆操作
当我们尝试登陆的时候,我们就会发现无法登陆,返回的内容却是用户名不存在;
因为,当我们登陆的时候,shiro会首先通过我们自定义的Realm进行操作【也就是我们编写的UserRealm类】,我们在下方可以看到//认证操作,该方法返回的结果是null,null的意思就是找不到用户信息,比如我们刚才在文本框输入用户名:zhangsan,这个时候我们查询不出来,就从该认证器中返回一个null告诉用户,找不到;

所以,我们接下来需要把认证器补充完整;
我们可以看到该方法有一个参数token,没错,我们就是要通过这个token来获取我们前端用户传过来的用户名(UserName),然后去我们数据库中进行查询对比;对比下你是否拥有这个用户,如果有的话,我就直接把它返回就可以了;
接下来,我们就需要从token中获取登陆的用户名(用户填写的文本框中的值),查询数据库返回用户信息;那我们要怎样获取用户Name呢》其实非常简单:
String username = (String) token.getPrincipal();//用来获取用户名
接下来,我们拿到这个用户名后,我们就可以进行dao【Mybiats就是Mapper来完成操作】的JDBC操作了,因为我们用的是Spring环境,我们就可以通过依赖注入的方式来进行操作,我们直接将登陆的接口注入进来,将获取到的用户名直接丢进去即可;具体步骤:
1.我们在Dao【Mapper层】中找到User这个接口层并且编写接口:User getUserByUsername(String username);//获取用户对象,通过用户名查询获取;
2.在Service层重写Mapper结构并编写实现类impl,直接调Mapper层中的登陆接口,直接retrun方法;
@Autowired
private UserMapper userMapper; public User getUserByUsername(String username){
return userMapper.getUserByUsername(username);
}
2.Sql语句:Select * From user(表名) where username = ?;查询返回我们的User对象【Mybiats在.xml文件中编写Sql】;
3.使用依赖注入,将Service注入到授权器中;
String username = (String) token.getPrincipal();//用来获取用户名
User user = userService.getUserByUsername(username);
4.判断
if (ObjectUtils.isEmpty(user){
//如果用户名不存在,直接返回null即可
return null;
}else{
//如果该用户存在
/**
* 1.用户对象
* 2.用户对应的密码,将数据库密码返回,Shiro会自动判断
* 3.上方定义的Realm名字(当前自定义Realm的名称)
*/
return new SimpleAuthenticationInfo(user,user.getpassword,getName);
}
Spring与Shiro整合 登陆操作的更多相关文章
- Spring与Shiro整合 静态注解授权
Spring与Shiro整合 静态注解授权 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 使用Shiro的种类 首先,Shiro的授权方式共有三种: 1.编程式授权(不推荐) 2. ...
- Spring集成shiro做登陆认证
一.背景 其实很早的时候,就在项目中有使用到shiro做登陆认证,直到今天才又想起来这茬,自己抽空搭了一个spring+springmvc+mybatis和shiro进行集成的种子项目,当然里面还有很 ...
- Spring与Shiro整合 加载权限表达式
Spring与Shiro整合 加载权限表达式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 如何加载权限表达式 我们在上章内容中画了一张图,里面有三个分项,用户 角色 权限: 那 ...
- Spring与Shiro整合
Spring整合篇--Shiro 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 什么是Shiro? 链接:https://www.cnblogs.com/StanleyBlogs/ ...
- Spring mvc shiro 整合
参考 : http://www.360doc.com/content/14/0722/10/18637323_396209195.shtml http://www.360doc.com/content ...
- Spring+SpringMVC+Hibernate 与 shiro 整合步骤
目录 1. 业务需求分析 2. 创建数据库 3. 创建 maven webapp 工程 4. 创建实体类(POJO) 5. 配置 Hibernate 和 Mapping 5.1 Hibernate 主 ...
- Spring Boot:整合Shiro权限框架
综合概述 Shiro是Apache旗下的一个开源项目,它是一个非常易用的安全框架,提供了包括认证.授权.加密.会话管理等功能,与Spring Security一样属基于权限的安全框架,但是与Sprin ...
- spring boot shiro redis整合基于角色和权限的安全管理-Java编程
一.概述 本博客主要讲解spring boot整合Apache的shiro框架,实现基于角色的安全访问控制或者基于权限的访问安全控制,其中还使用到分布式缓存redis进行用户认证信息的缓存,减少数据库 ...
- Shiro整合Spring
首先需要添加shiro的spring整合包. 要想在WEB应用中整合Spring和Shiro的话,首先需要添加一个由spring代理的过滤器如下: <!-- The filter-name ma ...
随机推荐
- Java自动化测试框架-04 - 来给你的测试报告化个妆整个形 - (上)(详细教程)
简介 前边通过宏哥的讲解和分享想必小伙伴们和童鞋们都已经见过testng框架生成的测试报告,是不是它的样子和长相实在是不敢让大家伙恭维.那么今天宏哥就当一回美容师,由宏哥来给它美美容:当一回外科医生, ...
- 字符编码 + python2和python3的编码区别(day08整理)
目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...
- 一个简单的Post Get请求
WWW请求 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; u ...
- iOS 应用签名原理&重签名
在苹果的日常开发中,真机测试与打包等很多流程都会牵扯到各种证书,CertificateSigningRequest,p12等.但是很多相应的开发者并不理解iOS App应用签名的原理和流程.今天着重讲 ...
- 代码作家Alpha冲刺阶段博客目录
一.Scrum Meeting 1. [第六周会议记录] 2. [第七周会议记录] 二.测试报告 Alpha阶段测试报告 三.习得的软工原理/方法/技能 1. 在项目前期准备中,我们学会了一些页面设 ...
- MySQL学习之路(1):SQL脚本语言
使用MySQL数据库,首先安装MySQL数据库,本文所有SQL脚本在MySQL上测试和执行. 安装Mysql服务器:安装Mysql workbench客户端,可以以图形化界面管理mysql:安装php ...
- MySQL:数据库基本认识
1.什么是数据库 通俗来讲,数据库就是用于存储数据的仓库.很多人可能会问,存储数据用文件不就行了吗?为什么还要弄数据库? 文件存储数据具有以下几个缺点: 文件的安全性问题 文件不利于查询和数据库管理 ...
- [考试反思]1102csp-s模拟测试98:苟活
好像没有什么粘文件得分的必要(本来就没多少分了也丢不了多少了) 而且从这次开始小绿框不代表首杀而代表手速了2333 其实我挺菜的,牛一个frepoen送掉100分才跟我并列%%%milkfun mik ...
- 拎壶冲冲冲专业砸各种培训机构饭碗篇----python自学(一)
本人一直从事运维工程师,热爱运维,所以从自学的角度站我还是以python运维为主. 一.python自学,当然少不了从hello world开始,话不多说,直接上手练习 1.这个可以学会 print( ...
- Python语言基础04-函数和模块的使用
本文收录在Python从入门到精通系列文章系列 在分享本章节的内容之前,先来研究一道数学题,请说出下面的方程有多少组正整数解. 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案. ...