1、配置ini
[users]
# 模擬登錄的用戶
zs=123456,role1
ls=123456,role2
ww=123456,role3
[roles]
# 模擬用戶角色
role1=user:q,user:c,user:a,user:d
role2=user:q,user:a
role3=user:q
2、jar包
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sxt.shiro</groupId>
<artifactId>01_shiro_Authentication_ini</artifactId>
<version>1.0</version>
<properties>
<shiro.version>1.4.2</shiro.version>
<logging.version>1.2</logging.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${logging.version}</version>
</dependency>
</dependencies>
</project>
代碼實現
public static void main(String[] args) {
String username = "zs";
String pwd = "123456";
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject subject = SecurityUtils.getSubject();
try{
AuthenticationToken token = new UsernamePasswordToken(username,pwd);
subject.login(token);
System.out.println(username+" 是否登錄成功:"+subject.isAuthenticated());
}catch (AuthenticationException e){
System.out.println("賬號或密碼錯誤!");
}
boolean b1 = subject.hasRole("role1");
System.out.println(username + " 是否擁有 role1 角色:"+b1);
boolean[] b2 = subject.hasRoles(Arrays.asList(new String[]{"role1","role2","role3"}));
System.out.println(username + " 是否分別擁有 role1,role2,role3 角色:"+Arrays.toString(b2));
boolean b3 = subject.hasAllRoles(Arrays.asList(new String[]{"role1","role2","role3"}));
System.out.println(username + " 是否同時擁有 role1,role2,role3 角色:"+b3);
boolean permitted = subject.isPermitted("user:q");
System.out.println(username + " 是否擁有 user:q 權限:"+permitted);
}