怎樣用shiro框架實(shí)現(xiàn)用戶認(rèn)證

小樊
82
2024-10-13 13:21:33
欄目: 編程語言

Apache Shiro 是一個(gè)強(qiáng)大且易用的 Java 安全框架,用于實(shí)現(xiàn)身份驗(yàn)證、授權(quán)、加密和會(huì)話管理。以下是使用 Shiro 框架實(shí)現(xiàn)用戶認(rèn)證的步驟:

  1. 添加依賴

在 Maven 項(xiàng)目的 pom.xml 文件中添加 Shiro 依賴:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.7.1</version>
</dependency>
  1. 創(chuàng)建 Shiro 配置類

創(chuàng)建一個(gè) Shiro 配置類,用于設(shè)置 Shiro 的相關(guān)配置。

import org.apache.shiro.SecurityUtils;
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 ShiroConfig {
    public static void main(String[] args) {
        // 創(chuàng)建 SecurityManager 工廠,通過 ini 配置文件創(chuàng)建 SecurityManager
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");

        // 獲取 SecurityManager 實(shí)例
        SecurityManager securityManager = factory.getInstance();

        // 將 SecurityManager 設(shè)置到當(dāng)前運(yùn)行環(huán)境中
        SecurityUtils.setSecurityManager(securityManager);

        // 獲取當(dāng)前用戶
        Subject currentUser = SecurityUtils.getSubject();

        // 創(chuàng)建用戶名/密碼身份驗(yàn)證 Token(即用戶身份/憑證)
        UsernamePasswordToken token = new UsernamePasswordToken("username", "password");

        try {
            // 登錄,即身份驗(yàn)證
            currentUser.login(token);
            System.out.println("登錄成功");
        } catch (Exception e) {
            System.out.println("登錄失敗");
            e.printStackTrace();
        }

        // 登出
        currentUser.logout();
    }
}
  1. 創(chuàng)建 Shiro 配置文件

在項(xiàng)目的 resources 目錄下創(chuàng)建 shiro.ini 配置文件,用于配置用戶、角色和權(quán)限。

[users]
username=password

[roles]
admin=user,admin

[urls]
/admin/** = authc, roles[admin]
/user/** = authc, roles[user]

在這個(gè)例子中,我們創(chuàng)建了一個(gè)用戶 “username”,其密碼為 “password”。我們還定義了一個(gè)角色 “admin”,具有 “user” 和 “admin” 權(quán)限。最后,我們配置了 URL 規(guī)則,以便在訪問特定 URL 時(shí)進(jìn)行身份驗(yàn)證和授權(quán)檢查。

  1. 運(yùn)行程序

運(yùn)行 ShiroConfig 類的 main 方法,如果用戶名和密碼正確,將看到 “登錄成功” 的輸出。如果用戶名或密碼錯(cuò)誤,將看到 “登錄失敗” 的輸出。

這就是使用 Apache Shiro 框架實(shí)現(xiàn)用戶認(rèn)證的基本過程。您還可以根據(jù)需要擴(kuò)展 Shiro,例如實(shí)現(xiàn)更復(fù)雜的權(quán)限控制、密碼加密等。

0