具体的默认配置见: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("授权通过"); }