shiro基於ini檔案入門案例
阿新 • • 發佈:2020-11-06
shiro基於ini檔案入門案例
1、導包
<dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.1</version> </dependency> <!-- Shiro uses SLF4J for logging. We'll use the 'simple' binding in this example app. See http://www.slf4j.org for more info. --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.21</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.21</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> </dependencies>
2、建立ini檔案
檔案放在類路徑下
# 配置使用者
[users]
# 使用者名稱和密碼
yl01=1111
3、匯入log4j配置檔案
# Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal log4j.rootCategory=debug, CONSOLE, LOGFILE # Set the enterprise logger category to FATAL and its only appender to CONSOLE. log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE # CONSOLE is set to be a ConsoleAppender using a PatternLayout. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n # LOGFILE is set to be a File appender using a PatternLayout. log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=d:\axis.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
4、測試
package com.yl.shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; 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; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 測試類 */ public class ShiroTest { //日誌輸出工具 private static final transient Logger log = LoggerFactory.getLogger(ShiroTest.class); public static void main(String[] args) { log.info("My First Apache Shiro Application"); //建立安全管理器的工廠物件 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); //使用工廠建立安全管理器物件 SecurityManager securityManager = factory.getInstance(); //把安全管理器繫結到當前執行緒 SecurityUtils.setSecurityManager(securityManager); //得到主體物件 Subject currentUser = SecurityUtils.getSubject(); //封裝使用者物件 AuthenticationToken token=new UsernamePasswordToken("yl01","111"); //進行認證 try { currentUser.login(token); System.out.println("認證通過"); } catch (AuthenticationException e) { System.out.println("使用者名稱或密碼錯誤"); } } }