Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java shiro

作者:__龙泉丶聂风   发布日期:2026-04-30   浏览:77

// Shiro 示例代码

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.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

public class ShiroExample {

    public static void main(String[] args) {
        // 1. 创建 SecurityManager 并设置到全局环境
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("shiro.ini");
        SecurityManager securityManager = factory.getInstance();
        SecurityUtils.setSecurityManager(securityManager);

        // 2. 获取当前用户(Subject)
        Subject currentUser = SecurityUtils.getSubject();

        // 3. 创建用户名/密码身份验证 token
        UsernamePasswordToken token = new UsernamePasswordToken("admin", "12345");

        try {
            // 4. 登录,即验证用户身份
            currentUser.login(token);
            System.out.println("User [" + currentUser.getPrincipal() + "] logged in successfully.");

            // 5. 检查角色和权限
            if (currentUser.hasRole("admin")) {
                System.out.println("User has the 'admin' role.");
            }

            if (currentUser.isPermitted("user:delete")) {
                System.out.println("User is permitted to delete users.");
            }

        } catch (AuthenticationException e) {
            // 6. 处理登录失败的情况
            System.out.println("Login failed: " + e.getMessage());
        }

        // 7. 登出
        currentUser.logout();
        System.out.println("User logged out.");
    }
}

解释说明:

  • 步骤 1:通过 IniSecurityManagerFactory 创建一个 SecurityManager 实例,并将其设置为全局的 SecurityManager。这一步是 Shiro 初始化的核心。

  • 步骤 2:使用 SecurityUtils.getSubject() 获取当前用户的 Subject 对象,Subject 表示当前的安全上下文(即用户)。

  • 步骤 3:创建一个 UsernamePasswordToken 对象,用于存储用户名和密码,作为登录凭证。

  • 步骤 4:调用 login() 方法进行用户身份验证。如果验证成功,则表示用户已登录;否则会抛出 AuthenticationException 异常。

  • 步骤 5:检查用户是否具有特定的角色或权限。Shiro 提供了简单易用的 API 来验证用户的角色和权限。

  • 步骤 6:捕获并处理可能的认证异常,如用户名或密码错误等情况。

  • 步骤 7:调用 logout() 方法使用户退出系统,清除当前用户的会话信息。

这段代码展示了如何使用 Apache Shiro 进行基本的身份验证和授权操作。

上一篇:java abstract用法

下一篇:java基本语法

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

jsonobject.tojavaobje

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站