shiro入门一
目录结构
依赖文件
//这是核心
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.1</version>
</dependency>
//log
<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>
shiro.ini
#配置用户
[users]
zhangsan=123456
lisi=123456
log4j配置
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
核心代码
public static void main(String[] args) {
String username="zhangs2an";
String password="123456";
log.info("My First Apache Shiro Application");
//1创建安全管理器的工厂对象 org.apache.shiro.mgt.SecurityManager;不能用java包里的
Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro.ini");
//2从使用工厂创建安全管理器
SecurityManager securityManager = factory.getInstance();
//3.把当前的安全管理器绑定到当前的线程
SecurityUtils.setSecurityManager(securityManager);
//4.使用SecurityUtils.getSubject得到主体对象
Subject subject = SecurityUtils.getSubject();
//5.封装用户名密码
AuthenticationToken token=new UsernamePasswordToken(username,password);
//6.得到认证
try {
subject.login(token);
System.out.println("认证完");
}/* catch (IncorrectCredentialsException e) {
System.out.println("密码不对");
}catch (UnknownAccountException e){
System.out.println("用户名不对");
}*/
//AuthenticationException是IncorrectCredentialsException和UnknownAccountException的父异常
catch (AuthenticationException e){
System.out.println("用户名或者密码不对");
}
}