shiro身份验证测试
2019独角兽企业重金招聘Python工程师标准>>>
一、登录验证
1、首先在shiro.ini里准备一些用户身份/凭据,后面这里会使用数据库代替,如:
[users]
[main]
#realm
jdbcRealm=com.learnging.system.shiro.ShiroRealm
securityManager.realm=$jdbcRealm
authc = org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authc.loginUrl = /[urls]
/index = authc
/a/logout = logout
2登录测试
准备知识: (1)当运行Web应用程序时,Shiro将创建一些有用的内置过滤器实例,并且自动的在[main]部分使用。如.ini文件配置,要使用authc,先定义其使用的类,这个类必须实现AuthenticatingFilter。这里也可以使用shiro已经实现好的一些AuthenticationFilter,如PassThruAuthenticationFilter,FormAuthenticationFilter。
(2)使用shiro的.ini文件路径前一定要加CLASSPATH、URL、FILE前缀,如classpath:shiro.ini;只需把shiro.ini放在resources文件夹下,它就能自动找到shiro文件。
测试用例如下:
package learning_system;
import junit.framework.Assert;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
import org.junit.Test;public class LoginLogoutTest
{@Testpublic void testHelloworld(){//1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManagerFactory<org.apache.shiro.mgt.SecurityManager> factory =new IniSecurityManagerFactory("classpath:shiro.ini");//2、得到SecurityManager实例 并绑定给SecurityUtilsorg.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();SecurityUtils.setSecurityManager(securityManager);//3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)Subject subject = SecurityUtils.getSubject();UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123");try{//4、登录,即身份验证subject.login(token);}catch (AuthenticationException e){//5、身份验证失败}Assert.assertEquals(true, subject.isAuthenticated()); //断言用户已经登录//6、退出subject.logout();}
}
web项目可以省略以上的如下代码,web容器会帮你做:
Factory<org.apache.shiro.mgt.SecurityManager> factory =new IniSecurityManagerFactory("classpath:shiro.ini");org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();SecurityUtils.setSecurityManager(securityManager);
转载于:https://my.oschina.net/u/2427561/blog/1517454
shiro身份验证测试相关推荐
- struts2漏洞监测_Apache Shiro身份验证绕过漏洞风险提示
漏洞公告 2020年8月17日,安恒应急响应中心监测发现Apache Shiro官方更新发布了1.6.0之前版本存在身份验证绕过的漏洞公告,对应CVE编号:CVE-2020-13933,相关链接: h ...
- shiro身份验证失败捕获的异常对应信息
shiro身份验证失败捕获的异常对应信息 身份验证失败请捕获 AuthenticationException 或其子类,常见的如: DisabledAccountException(禁用的帐号). L ...
- Shiro 身份验证
2019独角兽企业重金招聘Python工程师标准>>> 身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来 ...
- Shiro系列(三)--- Shiro身份验证和授权
继续我们shiro系列博客相关的学习笔记,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟.多谢! 目录 身份验证 示例 创建SecurityManager ...
- SSM整合Shiro 身份验证及密码加密简单实现
1.导入maven的相关依赖 <!-- shiro --><dependency><groupId>org.apache.shiro</groupId> ...
- Shiro系列-Shiro如何实现身份验证
导语 下面就来按照顺序依次介绍一下Shiro的使用场景,场景代码后续会放到GitHub上面希望大家可以多多支持.首先先来介绍一下Shiro的身份认证. 文章目录 Shiro身份验证 入门小例子 环 ...
- SpringBoot+Shiro+Vue实现身份验证
一.需求 1.Vue登录加密填写用户名.密码,点击登录之后提交给后端: 2.后端接收密码,通过shiro实现身份验证: 3.将登录结果返回给前端. 二.流程分析 1.前端将用户名.密码发给后端: 2. ...
- 如何使用Spring Security和Basic身份验证保护Jersey REST服务
在我之前的博客文章" 检查REST API是否有效的快速方法–从清单文件中获取GET详细信息"中 ,我展示了如何开发REST资源以轻松检查开发的REST API是否可用. 在本文中 ...
- shiro系列二、身份验证和授权
一.身份验证 先来看看身份验证的流程 流程如下: 1.首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过SecurityUtil ...
最新文章
- 重载和覆盖的区别?(overload vs override)
- html你可能还不知道的一些知识点
- C++ url中文编码处理 编码转为UTF8 CChineseCode下载
- Vue 3响应式原理及实现
- Linux apache源码安装自定义Server
- nyoj91 阶乘之和
- java使用Executor(执行器)管理线程
- uiautomatorviewer 查看元素新思路
- 快速删除node_modules文件夹!!!
- java继承与覆盖_Java-继承与覆盖【摘抄】
- php中文网是什么需要框架,框架是什么?
- html通过拼音首字母定位,input+div 实现输入拼音首字母或汉字自动检索上拉列表...
- RS232 RS485 TTL USB 电平
- 搭建SRS直播服务器
- 删除MySQL历史数据并修改sqlsource.status lastindex脚本
- Ubuntu 20.04 + ROS Noetic + OpenCV 4.10编译kalibr相机标定功能包
- 金蝶KIS商贸版实现'条码标签打印'功能进行商品条码打印
- A hard puzzle(HDU1097)(快速幂取模)
- 楼层标高怎么引上去_楼层标高怎么引上去
- 工作随记-Java利用企业微信群机器人定时发送消息
热门文章
- morse java_华威MORSE,华威数统那个比较好?
- Linux网络编程实例详解
- 《Python Cookbook 3rd》笔记(4.13):创建数据处理管道
- 《Python Cookbook 3rd》笔记(4.2):代理迭代
- 知道一点怎么设直线方程_【初中数学】反比例函数策略(二) ——构造方程法...
- C++学习笔记章节中 面向对象详解
- 车子突然溜坡追尾 驾校教练说挂P挡拉手刹不会溜坡
- 路由器和交换机的区别详解
- 解决 : Shell 脚本 $‘\r‘: command not found 问题
- node、npm、vue安装 -- VUE 项目 demo 实例