2.shiro+jdbc+idea+maven数据库


注意:如果不配置自定义realm。使用默认,
将会去指定数据库的下‘users’表查询‘userName’和‘password’进行判断

具体的默认配置见:IniRealm类源码。
1)
添加依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.18</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>

2)
添加配置连接:
private JdbcRealm jdbcRealm=new JdbcRealm();
private DruidDataSource druidDataSource=new DruidDataSource();
@Before
public void before(){
druidDataSource.setUrl("jdbc:mysql://localhost:3306/shiro");
druidDataSource.setUsername("root");
druidDataSource.setPassword("123");
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");

jdbcRealm.setPermissionsLookupEnabled(true);
jdbcRealm.setDataSource(druidDataSource);
}

3)
使用:
@Test
public void testjdbc(){
/*new一个默认安全管理器*/
DefaultSecurityManager securityManager=new DefaultSecurityManager();
/*安全管理器加载外部信息*/
securityManager.setRealm(jdbcRealm);
/*SecurityUtils加载安全管理器*/
SecurityUtils.setSecurityManager(securityManager);
/*Subject是shiro主体对象,通过创建获得它*/
Subject subject=SecurityUtils.getSubject();
/*token传递用户名和密码的域属性*/
UsernamePasswordToken token=new UsernamePasswordToken("aaa","123");
/*使用jdbc作为数据源,那么login会自动到指定数据库下user表去查找username和pasword*/
/*详细源码查看:JdbcRealm类*/
subject.login(token);
/*认证通过输出这个*/
System.out.println("认证通过");
subject.checkRole("admin");
subject.checkPermission("user:list");
System.out.println("授权通过");
}

上一篇:使用druid连接池的出现泄漏的问题


下一篇:我爱Java系列之---【SpringBoot中常用的注解和两种注入方式】