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身份验证测试相关推荐

  1. struts2漏洞监测_Apache Shiro身份验证绕过漏洞风险提示

    漏洞公告 2020年8月17日,安恒应急响应中心监测发现Apache Shiro官方更新发布了1.6.0之前版本存在身份验证绕过的漏洞公告,对应CVE编号:CVE-2020-13933,相关链接: h ...

  2. shiro身份验证失败捕获的异常对应信息

    shiro身份验证失败捕获的异常对应信息 身份验证失败请捕获 AuthenticationException 或其子类,常见的如: DisabledAccountException(禁用的帐号). L ...

  3. Shiro 身份验证

    2019独角兽企业重金招聘Python工程师标准>>> 身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来 ...

  4. Shiro系列(三)--- Shiro身份验证和授权

    继续我们shiro系列博客相关的学习笔记,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟.多谢! 目录 身份验证 示例 创建SecurityManager ...

  5. SSM整合Shiro 身份验证及密码加密简单实现

    1.导入maven的相关依赖 <!-- shiro --><dependency><groupId>org.apache.shiro</groupId> ...

  6. Shiro系列-Shiro如何实现身份验证

    导语   下面就来按照顺序依次介绍一下Shiro的使用场景,场景代码后续会放到GitHub上面希望大家可以多多支持.首先先来介绍一下Shiro的身份认证. 文章目录 Shiro身份验证 入门小例子 环 ...

  7. SpringBoot+Shiro+Vue实现身份验证

    一.需求 1.Vue登录加密填写用户名.密码,点击登录之后提交给后端: 2.后端接收密码,通过shiro实现身份验证: 3.将登录结果返回给前端. 二.流程分析 1.前端将用户名.密码发给后端: 2. ...

  8. 如何使用Spring Security和Basic身份验证保护Jersey REST服务

    在我之前的博客文章" 检查REST API是否有效的快速方法–从清单文件中获取GET详细信息"中 ,我展示了如何开发REST资源以轻松检查开发的REST API是否可用. 在本文中 ...

  9. shiro系列二、身份验证和授权

    一.身份验证 先来看看身份验证的流程 流程如下: 1.首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过SecurityUtil ...

最新文章

  1. 重载和覆盖的区别?(overload vs override)
  2. html你可能还不知道的一些知识点
  3. C++ url中文编码处理 编码转为UTF8 CChineseCode下载
  4. Vue 3响应式原理及实现
  5. Linux apache源码安装自定义Server
  6. nyoj91 阶乘之和
  7. java使用Executor(执行器)管理线程
  8. uiautomatorviewer 查看元素新思路
  9. 快速删除node_modules文件夹!!!
  10. java继承与覆盖_Java-继承与覆盖【摘抄】
  11. php中文网是什么需要框架,框架是什么?
  12. html通过拼音首字母定位,input+div 实现输入拼音首字母或汉字自动检索上拉列表...
  13. RS232 RS485 TTL USB 电平
  14. 搭建SRS直播服务器
  15. 删除MySQL历史数据并修改sqlsource.status lastindex脚本
  16. Ubuntu 20.04 + ROS Noetic + OpenCV 4.10编译kalibr相机标定功能包
  17. 金蝶KIS商贸版实现'条码标签打印'功能进行商品条码打印
  18. A hard puzzle(HDU1097)(快速幂取模)
  19. 楼层标高怎么引上去_楼层标高怎么引上去
  20. 工作随记-Java利用企业微信群机器人定时发送消息

热门文章

  1. morse java_华威MORSE,华威数统那个比较好?
  2. Linux网络编程实例详解
  3. 《Python Cookbook 3rd》笔记(4.13):创建数据处理管道
  4. 《Python Cookbook 3rd》笔记(4.2):代理迭代
  5. 知道一点怎么设直线方程_【初中数学】反比例函数策略(二) ——构造方程法...
  6. C++学习笔记章节中 面向对象详解
  7. 车子突然溜坡追尾 驾校教练说挂P挡拉手刹不会溜坡
  8. 路由器和交换机的区别详解
  9. 解决 : Shell 脚本 $‘\r‘: command not found 问题
  10. node、npm、vue安装 -- VUE 项目 demo 实例