【shiro】shiro學習筆記1 - 初識shiro

目錄java

認證流程

st=>start: Start
e=>end: End
op1=>operation: 構造SecurityManager環境
op2=>operation: Subject.login()提交認證
op3=>operation: SecurityManager.login()執行認證
op4=>operation: Authenticator執行認證
op5=>operation: Realm根據身份獲取認證信息

st->op1->op2->op3->op4->op5->e

環境

  • 目錄
    目錄apache

  • 包依賴
    pom.xml
<dependencies>
  <!-- shiro -->
  <dependency>
 <groupId>org.apache.shiro</groupId>
 <artifactId>shiro-core</artifactId>
 <version>1.2.4</version>
 </dependency>
  <!--日誌問題的解決-->
  <dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-log4j12</artifactId>
 <version>1.7.15</version>
 </dependency>
 <dependency> <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 <scope>test</scope>
 </dependency>
</dependencies></pre>

代碼

AuthenticationTest.javaapp

//建立SecurityManager環境
//1.建立SecurityManager工廠
Factory<SecurityManager> factory =
    new IniSecurityManagerFactory("classpath:shiro-config.ini");
//2.經過工廠得到實例
SecurityManager securityManager = factory.getInstance();

//將SecurityManager設置到運行環境中
SecurityUtils.setSecurityManager(securityManager);

//Subject.login()提交認證
//1.建立Subject對象
Subject subject = SecurityUtils.getSubject();
//2.封裝口令對象
AuthenticationToken token = new UsernamePasswordToken("kiwi", "123456");
//3.提交認證
try {
    subject.login(token);
} catch (AuthenticationException e) {
    e.printStackTrace();
}

System.out.println("認證:" + subject.isAuthenticated());

shiro-config.inispa

[users]
kiwi = 123456

log4j.properties日誌

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

總結

1.剛開始運行總是報日誌的問題
解決:引入slf4j-log4j12的jar包,具體參考關於SLF4J: Failed to load class的問題及解決
2.爲何要用ini文件而不用properties
由於ini文件能夠分片,好比[users]就是劃一片範圍用於users信息code

相關文章
相關標籤/搜索