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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。