shiro-JdbcRealm

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();
    }
}

你可能感兴趣的:(shiro-JdbcRealm)