shiro.ini详解

shiro.ini一般放在classpath路径下,ini配置著有有4个主要的配置类

main

提供了对根对象securityManager及其依赖对象的配置,通过反射创建相应的实例。

#创建对象
securityManager=org.apache.shiro.mgt.DefaultSecurityManager

1.对象名=全限定类名 相当于调用public无参构造器创建对象

2.对象名.属性名=值 相当于调用于setter方法设置常量值

3.对象名.属性名=$对象引用 相当于调用setter方法设置对象引用

users

提供了对用户/密码及其角色的配置,用户名=密码,角色1,角色2 比如:username=password,role1,role2

[users] 
zhangsan=123,role1,role2 
wangwu=123,role1

roles

提供了角色及权限之间关系的配置,角色=权限1,权限2 比如:role1 = permission1 , permission2

[roles] 
role1=user:create,user:update 
role2=*  

urls

提供了对web url拦截相关的配置,url=拦截器[参数],拦截器

/index.html = authno
/admin/** = auth, roles[admin],perms["permission1"]

实例

//shiro.ini
[users]
root=123456
# 账号为root 密码是123456

//java
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
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;
/**
 *shiro的第一个入门案例
 */
public class HelloTest {
	public static void main(String[] args) {
		//1.加载配置文件获取Factory对象
		Factoryfactory=new IniSecurityManagerFactory("classpath:shiro.ini");
		//2.获取SecurityManager对象
		SecurityManager securityManager =factory.getInstance();
		//3.将SecurityManager添加到系统
		SecurityUtils.setSecurityManager(securityManager);
		//4.通过SecurityManager获取Subject对象
		Subject subject=SecurityUtils.getSubject();
		//账号密码是客户端提交的数据
		AuthenticationToken token=new UsernamePasswordToken("root","123456");
		//5.实现认证操作
		try{
			subject.login(token);
			System.out.println("认证成功");
		}catch(UnknownAccountException e){
			System.out.println("账号输入错误。,,,");
		}catch (IncorrectCredentialsException e) {
			System.out.println("密码输入错误。。。");
		}
	}
}