引入mysql相关依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!--shiro核心包-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.0</version>
</dependency>
配置数据库连接和数据源配置
//创建数据源
DruidDataSource datasource = new DruidDataSource();
//设置连接
{
datasource.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone = GMT%2B8&useSSL = false ");
datasource.setUsername("root");
datasource.setPassword("root");
}
创建相关数据库表结构
在这里插入代码片 @Test
public void jdbcRealm() {
//创建JdbcRealm
JdbcRealm jdbcRealm = new JdbcRealm();
jdbcRealm.setDataSource(datasource);
jdbcRealm.setPermissionsLookupEnabled(true);
//自定义sql
String sql = "select password from test_user where username = ?";
jdbcRealm.setAuthenticationQuery(sql);
//构建securityManager环境
final DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
defaultSecurityManager.setRealm(jdbcRealm);
//主体提交认证请求加入到securityManager环境 通过shiro的工具类SecurityUtils获取认证或授权的主体
SecurityUtils.setSecurityManager(defaultSecurityManager);
Subject subject = SecurityUtils.getSubject();
//模拟用户账号Token进行认证和授权
UsernamePasswordToken token = new UsernamePasswordToken("baobao", "521314");
//登录
subject.login(token);
// subject.checkRoles("admin");
// subject.checkPermissions("add");
}