Shiro学习笔记(一)
时间:2022-07-26
本文章向大家介绍Shiro学习笔记(一),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先展示一下项目的结构目录
工程是用maven创建的 主要是方便管理Jar包
maven的 pom文件中所需要的jar包
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
shiro.ini配置文件中的内容(主要是配置用户的账号)
[users]
zuoyan=zuoyan123
kangkang=kangkang123
新建测试包,然后在里面写测试代码
1 package com.zuoyan.shiro;
2
3 import org.apache.shiro.SecurityUtils;
4 import org.apache.shiro.authc.AuthenticationException;
5 import org.apache.shiro.authc.UsernamePasswordToken;
6 import org.apache.shiro.config.IniSecurityManagerFactory;
7 import org.apache.shiro.mgt.SecurityManager;
8 import org.apache.shiro.subject.Subject;
9 import org.apache.shiro.util.Factory;
10 import org.junit.Test;
11
12
13
14 public class HelloWorld {
15
16 @Test
17 public void testFirstShiro() {
18 // 读取配置文件,初始化SecurityManager工厂
19 Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro.ini");
20 // 获取securityManager实例
21 SecurityManager securityManager=factory.getInstance();
22 // 把securityManager实例绑定到SecurityUtils
23 SecurityUtils.setSecurityManager(securityManager);
24 // 得到当前执行的用户
25 Subject currentUser=SecurityUtils.getSubject();
26 // 创建token令牌,用户名/密码
27 UsernamePasswordToken token=new UsernamePasswordToken("zuoyan", "zuoyan123");
28 try{
29 // 身份认证
30 currentUser.login(token);
31 System.out.println("身份认证成功!");
32 }catch(AuthenticationException e){
33 e.printStackTrace();
34 System.out.println("身份认证失败!");
35 }
36 // 退出
37 currentUser.logout();
38 }
39 }
当身份认证成功,也就是账号密码在配置文件中的效果
下面是在认证失败的情况,也就是密码不在配置文件中
这样到这里一个简单Shiro的HelloWorld就搭建成功了!
- CodeSmith 创建Ado.Net自定义模版(二)
- 一文读懂卷积神经网络CNN
- NVIDIA张建中:自主学习芯片,推动人工智能发展
- CodeSmith 创建Ado.Net自定义模版(三)
- Android注解学习(2)
- Android注解学习(2)
- 机器学习之——距离度量学习
- Enterprise Library Policy Injection Application Block 之三:PIAB的扩展—创建自定义CallHandler(提供Source Code下载)
- CodeSmith 创建Ado.Net自定义模版(四)
- TensorFlow图像分类教程
- Enterprise Library Policy Injection Application Block 之一: PIAB Overview
- Python教学——第七天
- 大数据将带来电视媒体生态式变革!大数据如何深度融合电视媒体?
- Silverlight SEO优化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 团体程序设计天梯赛-练习集 L1-038 新世界
- 团体程序设计天梯赛-练习集 L1-040 最佳情侣身高差
- 团体程序设计天梯赛-练习集 L1-041 寻找250
- 十年磨一剑!腾讯QQ Linux版 2.0.0 Beta重磅发布!
- 团体程序设计天梯赛-练习集 L1-045 宇宙无敌大招呼
- 团体程序设计天梯赛-练习集 L1-047 装睡
- 团体程序设计天梯赛-练习集 L1-052 2018我们要赢
- 团体程序设计天梯赛-练习集 L1-053 电子汪
- 团体程序设计天梯赛-练习集 L1-056 猜数字
- PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想
- PAT (Basic Level) Practice (中文)1002 写出这个数
- PAT (Basic Level) Practice (中文)1004 成绩排名
- PAT (Basic Level) Practice (中文)1006 换个格式输出整数
- PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题
- Ceph分布式存储日常运维管理手册