# DataStructureAndAlgorithm **Repository Path**: luo-zhibang/data-structure-and-algorithm ## Basic Information - **Project Name**: DataStructureAndAlgorithm - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-21 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Shiro 登录和权限校验示例 ## 项目结构 ``` DataStructureAndAlgorithm/ ├── pom.xml # Maven 配置文件 ├── README.md # 项目说明 ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── shiro/ │ │ │ ├── Main.java # 示例主类 │ │ │ └── ShiroUtils.java # Shiro 工具类 │ │ └── resources/ │ │ └── shiro.ini # Shiro 配置文件 │ └── lib/ │ └── shiro-core-1.9.1.jar # Shiro 核心依赖 └── Test.java # 测试文件 ``` ## 功能说明 本项目演示了 Apache Shiro 的基本使用,包括: 1. **用户登录**:验证用户名和密码 2. **权限校验**:检查用户是否具有指定权限 3. **角色检查**:检查用户是否具有指定角色 4. **用户登出**:安全退出系统 ## 配置说明 ### shiro.ini 配置文件 ```ini # Shiro 配置文件 [users] # 用户名 = 密码, 角色 admin = admin123, admin user = user123, user [roles] # 角色 = 权限 admin = * user = user:read, user:write ``` ## 运行方法 ### 方法一:使用 Maven(推荐) 1. 确保系统中安装了 Maven 2. 执行以下命令: ```bash mvn compile exec:java -Dexec.mainClass="com.example.shiro.Main" ``` ### 方法二:手动编译和运行 1. 下载必要的依赖 JAR 文件: - shiro-core-1.9.1.jar - slf4j-simple-1.7.36.jar - slf4j-api-1.7.36.jar 2. 将依赖 JAR 文件放入 lib 目录 3. 编译代码: ```bash javac -cp "lib/*" src/main/java/com/example/shiro/*.java ``` 4. 运行示例: ```bash java -cp "src/main/java;lib/*" com.example.shiro.Main ``` ## 示例输出 运行示例后,您将看到以下输出: ``` === Shiro 登录和权限校验示例 === 1. 测试用户登录: 测试 admin 用户登录: 登录成功!欢迎,admin 2. 测试权限校验(admin 用户): 用户是否拥有权限 user:read:true 用户是否拥有权限 user:write:true 用户是否拥有权限 admin:manage:true 用户是否拥有角色 admin:true 用户是否拥有角色 user:false 3. 测试用户登出: 登出成功! 4. 测试普通用户登录: 登录成功!欢迎,user 5. 测试权限校验(普通用户): 用户是否拥有权限 user:read:true 用户是否拥有权限 user:write:true 用户是否拥有权限 admin:manage:false 用户是否拥有角色 user:true 用户是否拥有角色 admin:false 6. 测试登录失败: 登录失败:Incorrect password 7. 最终登出: 登出成功! === 示例结束 === ``` ## 代码说明 ### ShiroUtils.java - **init()**:初始化 Shiro 安全管理器 - **login(username, password)**:用户登录 - **logout()**:用户登出 - **hasPermission(permission)**:检查用户是否有指定权限 - **hasRole(role)**:检查用户是否有指定角色 - **getCurrentUsername()**:获取当前登录用户名 - **isAuthenticated()**:检查用户是否已登录 ### Main.java 演示了 Shiro 的完整使用流程,包括: - 初始化 Shiro - 测试管理员用户登录和权限 - 测试普通用户登录和权限 - 测试登录失败情况 - 测试用户登出 ## 注意事项 1. 本示例使用的是 Shiro 的 INI 配置方式,适用于简单场景 2. 在实际项目中,建议使用数据库或其他持久化方式存储用户信息 3. 密码应该使用加密存储,而不是明文 4. 权限管理应该根据实际业务需求进行设计