shiro-JdbcRealm
1 、加入依赖
<dependencies>
<dependency>
<groupId>org.apache.shirogroupId>
<artifactId>shiro-coreartifactId>
<version>1.2.3version>
dependency>
<dependency>
<groupId>commons-logginggroupId>
<artifactId>commons-loggingartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.38version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.10version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.8.1version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-simpleartifactId>
<version>1.7.25version>
<scope>compilescope>
dependency>
dependencies>
2、测试
public void test() {
//连接druid数据池
DruidDataSource dataSource=new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/shiro?characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("240010");
//自定义realm放入数据池并设置权限查找
JdbcRealm jdbcRealm=new JdbcRealm();
jdbcRealm.setPermissionsLookupEnabled(true);
jdbcRealm.setDataSource(dataSource);
//securityManager获取并设置realm
DefaultSecurityManager defaultSecurityManager=new DefaultSecurityManager();
defaultSecurityManager.setRealm(jdbcRealm);
SecurityUtils.setSecurityManager(defaultSecurityManager);
//getSubject和获取token
Subject ssub = SecurityUtils.getSubject();
UsernamePasswordToken toke = new UsernamePasswordToken("zhangsan", "123");
//使用login方法登陆 使用isAuthenticated验证 使用isPermitted看授权
try {
ssub.login(toke);
if(ssub.isAuthenticated()){
System.out.println("成功");
}
if(ssub.isPermitted("userList")){
System.out.println("有userList权限");
}else{
System.out.println("没有这个userList权限");
}
} catch (UnknownAccountException uae) {
System.out.println(uae.getMessage());
uae.printStackTrace();
} catch (IncorrectCredentialsException ice) {
System.out.println(ice.getMessage());
ice.printStackTrace();
}
}