Apache Shiro 是一個強大且易用的 Java 安全框架,用于實現身份驗證、授權、加密和會話管理。以下是使用 Shiro 框架實現用戶認證的步驟:
在 Maven 項目的 pom.xml 文件中添加 Shiro 依賴:
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.7.1</version>
</dependency>
創建一個 Shiro 配置類,用于設置 Shiro 的相關配置。
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) {
// 創建 SecurityManager 工廠,通過 ini 配置文件創建 SecurityManager
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
// 獲取 SecurityManager 實例
SecurityManager securityManager = factory.getInstance();
// 將 SecurityManager 設置到當前運行環境中
SecurityUtils.setSecurityManager(securityManager);
// 獲取當前用戶
Subject currentUser = SecurityUtils.getSubject();
// 創建用戶名/密碼身份驗證 Token(即用戶身份/憑證)
UsernamePasswordToken token = new UsernamePasswordToken("username", "password");
try {
// 登錄,即身份驗證
currentUser.login(token);
System.out.println("登錄成功");
} catch (Exception e) {
System.out.println("登錄失敗");
e.printStackTrace();
}
// 登出
currentUser.logout();
}
}
在項目的 resources
目錄下創建 shiro.ini
配置文件,用于配置用戶、角色和權限。
[users]
username=password
[roles]
admin=user,admin
[urls]
/admin/** = authc, roles[admin]
/user/** = authc, roles[user]
在這個例子中,我們創建了一個用戶 “username”,其密碼為 “password”。我們還定義了一個角色 “admin”,具有 “user” 和 “admin” 權限。最后,我們配置了 URL 規則,以便在訪問特定 URL 時進行身份驗證和授權檢查。
運行 ShiroConfig
類的 main
方法,如果用戶名和密碼正確,將看到 “登錄成功” 的輸出。如果用戶名或密碼錯誤,將看到 “登錄失敗” 的輸出。
這就是使用 Apache Shiro 框架實現用戶認證的基本過程。您還可以根據需要擴展 Shiro,例如實現更復雜的權限控制、密碼加密等。