shiro学习笔记(1)--基础定义
一:shiro基础
(学习地址:https://www.w3cschool.cn/shiro/andc1if0.html)
1、核心概念
Authentication:认证
Authorization:授权
SessionManageMent:session管理
Cryptography:加密
2、shiro核心是SecurityManager
用户在shiro中表示为主题(subject),通过SecurityManager获取,同时SecurityManager通过域Realm获取数据库中用户校验信息进行校验。特别说明:shiro只负责接收信息并操作,不负责维护数据,用户信息需要自己维护,通过接口传给shiro。
详细流程图:
二:默认的IniRealm
1、jar包
<!-- shiro jar -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mchange/mchange-commons-java -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>mchange-commons-java</artifactId>
<version>0.2.15</version>
</dependency>
<!-- ehcache jar -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.3</version>
</dependency>
2、main方法
public static void main(String[] args) {
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro4.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("kexq","123654");
subject.login(usernamePasswordToken);
if(subject.isAuthenticated()){
System.out.println("认证成功");
}else{
System.out.println("认证失败");
}
}
3、ini配置文件
#shiro简单配置实例
#主配置
[main]
#用户信息配置
[users]
kexq=123654
ke=123654
三、JdbcRealm的配置方法
1、main
public static void main(String[] args) {
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro2.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject subject = SecurityUtils.getSubject();
try {
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("kexq", "123456");
subject.login(usernamePasswordToken);
if (subject.isAuthenticated()) {
System.out.println("认证成功");
}
}catch (Exception e){
System.out.println("认证失败");
e.printStackTrace();
}
}
2、ini配置
说明:
#shiro jdbcRealm配置实例
[main]
#配置数据源
dataSource=org.apache.commons.dbcp.BasicDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://127.0.0.1:3306/shiro
dataSource.username=root
dataSource.password=123456
#配置realm $表示引用对象
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource=$dataSource
#配置securityManager
securityManager.realm=$jdbcRealm
3、数据库表
4、说明:
(1)数据库表名和字段名必须按规范来(由jdbcRealm默认)
(2)ini配置文件规范:通过$表示引用对象
(3)附jdbcRealm部分源码
还没有评论,来说两句吧...