shiro第三天整合jdbc

Shiro基于JdbcRealm的授权流程
本文详细介绍了Apache Shiro框架中基于JdbcRealm的授权流程,包括Subject发起请求、SecurityManager委托Authorizer进行授权、JdbcRealm查找角色和权限信息的过程,并提供了具体的配置示例。

授权流程

    1. Subject
      发起请求,判断是否有相应的角色或者权限
    1. SecurityManager
      接收Subject请求委托给Authorizer
    1. Authorzer
      接收SecurityManager并授权
  • 4 Realm
    查找角色和授权信息

基于JdbcRealm授权

shiro.ini

#配置数据源

dataSource=com.alibaba.druid.pool.DruidDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/shiro?useUnicde=false&characterEncoding=utf-8
dataSource.username=root
dataSource.password=123456

# 使用 自定义的JdbcRealm

jdbcRealm=shiro04.JdbcsaltRealm
jdbcRealm.dataSource=$dataSource
# 重写带salt语句 以login_name当盐值
jdbcRealm.authenticationQuery=select password,login_name from t_user where login_name=?
#重写角色的sql
jdbcRealm.userRolesQuery=select ro.role_name from t_user u left join user_role r on r.user_id=u.id left join t_role ro on ro.id=r.role_id  where login_name=?

# 启用权限查找 默认是false

jdbcRealm.permissionsLookupEnabled=true

#重写权限查找
jdbcRealm.permissionsQuery=select tps.perssion_name from t_role  role left join role_permission rop on rop.role_id=rop.role_id left JOIN t_permission tps on tps.id=rop.permission_id WHERE tps.perssion_name=?

#配置密码匹配器
credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher
credentialsMatcher.hashAlgorithmName=sha1
credentialsMatcher.hashIterations=5


#将密码匹配器注入到JdbcRealm中
jdbcRealm.credentialsMatcher=$credentialsMatcher

securityManager.realms=$jdbcRealm

main:

Subject subject= ShiroUtils.getSubject("classpath:shiro06/shiro.ini");
subject.login(new UsernamePasswordToken("admin","123"));
  System.out.println("是否认证:"+subject.isAuthenticated());

boolean hasRole = subject.hasRole("teacher");
  System.out.println(hasRole);

boolean permitted = subject.isPermitted("teacher:view");

转载于:https://www.cnblogs.com/lilihai/p/10147624.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值