Java经典框架之Shiro
2023-12-29 10:44:38
Shiro
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。
??
课程内容的介绍
1. Shiro简介
2. Shiro的基本应用
3. Shiro高级应用
??
??
一、Shiro简介
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro 的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
??
1. 框架图说明
??
1.1 从外部查看shiro框架
??
应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject。
??
??
1.2 内部结构框架
??
? ? ? ??
1.3 常见单词说明
??
2.Shiro的入门案例
? ??
2.1 添加相关的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bobo</groupId>
<artifactId>ShiroDemo01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
? ?
2.2 创建ini文件
初次使用我们可以将系统的账号信息配置在ini文件中,减少入门的难度。
[users]
root=123456
# 账号是root,密码是123456
? ? ?
2.3 测试代码
package com.bobo.shiro.test;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
public class Test01 {
/**
* Shiro的入门案例
* 账号密码是定义在ini文件中的
* @param args
*/
public static void main(String[] args) {
// 1.获取一个SecurityManager工厂对象
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
// 2.通过SecurityManager工厂对象创建SecurityManager对象
SecurityManager securityManager = factory.getInstance();
// 3.将SecurityManager对象添加到当前的运行环境中去
SecurityUtils.setSecurityManager(securityManager);
// 4.获取Subject对象
Subject subject = SecurityUtils.getSubject();
// 5.获取用户提交的要认证的账号密码
String userName = "root";
String password = "1234561";
// 6.将用户提交的账号密码封装为一个Token对象
AuthenticationToken token = new UsernamePasswordToken(userName,password);
// 7.完成认证操作 login
subject.login(token);
// 8.获取认证状态
System.out.println(subject.isAuthenticated());
}
}
??
2.4 测试效果
账号错误,抛UnknownAccountException异常。
??
密码出错,抛IncorrectCredentialsException异常。
??
账号密码都正确会正常执行,基于以上特点我们可以将代码结构修改为如下。
文章来源:https://blog.csdn.net/m0_52514893/article/details/135282267
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!