Shiro数据库获取数据

1.添加环境

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>

2.添加相关配置文件
(1)spring-jdbc.xml

<!--配置相关连接池-->
<beanclass="com.alibaba.druid.pool.DruidDataSource"id="dataSource">
<propertyname="url"value="jdbc:mysql://localhost:3306/shiro_test?serverTimezone=UTC"/>
<propertyname="username"value="root"/>
<propertyname="password"value="root"/>
</bean>
<!--实例化jdbcTemplate-->
<beanclass="org.springframework.jdbc.core.JdbcTemplate"id="jdbcTemplate">
<propertyname="dataSource"ref="dataSource"/>
</bean>

3.自定义realm重写用户认证及权限认证方法

Publicclass MyRealm extends AuthorizingRealm{
@Resource
Private UserDao userDao;
@Override
Protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection){
//根据用户名获取相关角色以及权限
Stringusername=(String)principalCollection.getPrimaryPrincipal();
Stringrole=userDao.getRoleByUsername(username);
Set<String>roles=newHashSet<String>();
roles.add(role);
SimpleAuthorizationInfo simpleAuthorizationInfo=newSimpleAuthorizationInfo();
simpleAuthorizationInfo.setRoles(roles);
Return simpleAuthorizationInfo;
}
@Override
Protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)throws AuthenticationException{
/*自定义realm验证用户名和密码*/
Stringusername=(String)authenticationToken.getPrincipal();
Stringpassword=newString((char[])authenticationToken.getCredentials());
Useruser=userDao.getUserPassword(username);
if(user!=null){
if(!user.getPassword().equals(password)){
System.out.println("用户密码错误");
Throw new IncorrectCredentialsException();
}
}else{
System.out.println("用户不存在");
Throw new UnknownAccountException();
}
Return new SimpleAuthenticationInfo(username,password,getName());
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值