设为首页 收藏本站
查看: 1001|回复: 0

[经验分享] Apache Shiro学习笔记(五)Web集成使用JdbcRealm

[复制链接]

尚未签到

发表于 2018-11-19 12:40:38 | 显示全部楼层 |阅读模式
鲁春利的工作笔记,好记性不如烂笔头
  

  http://shiro.apache.org/web-features.html
  

  前面的示例都是把用户名或密码以及权限信息放在ini文件中,但实际的Web项目开发过程中,实际上一般是userrole、rolepermission进行关联关系的配置,每次登录时加载其拥有的权限或者是每次访问时再判断其权限。
  

  jdbc-shiro.ini
[main]
#默认是/login.jsp
authc.loginUrl=/login
roles.unauthorizedUrl=/unauthorized
perms.unauthorizedUrl=/unauthorized
# 配置JDBC数据库连接
dataSource=com.alibaba.druid.pool.DruidDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/spring_test
dataSource.username=root
dataSource.password=Mvtech123!@
# JdbcRealm
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
# 身份认证
jdbcRealm.authenticationQuery=SELECT `password` FROM `users` WHERE `username` = ? AND is_delete = '0'
# 判断是否有拥有角色
jdbcRealm.userRolesQuery=SELECT `role_name` FROM `user_roles` WHERE `username` = ? AND is_delete = '0'
# 判断是否具有权限
jdbcRealm.permissionsQuery=SELECT `permission` FROM `roles_permissions` WHERE `role_name` = ? AND is_delete = '0'
# 指定数据源
jdbcRealm.dataSource=$dataSource
# 指定securityManager的realms实现
securityManager.realms=$jdbcRealm
[urls]
/login=anon
/static/**=anon
/role=authc,roles[admin]
/permission=authc,perms["user:create"]
/unauthorized=anon
/logout=logout  

  DB

/** Table structure for table `users` */
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(20) DEFAULT NULL COMMENT '用户名',
  `password` varchar(50) DEFAULT NULL COMMENT '密码',
  `password_salt` varchar(10) DEFAULT NULL COMMENT '生成密码时用的随机种子',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `is_delete` char(1) DEFAULT '0' COMMENT '删除标识(0:正常;1:已删除)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/** Data for the table `users` */
insert  into `users`(`id`,`username`,`password`,`password_salt`,`create_by`,`create_time`,`update_by`,`update_time`,`is_delete`) values (1,'lucl','e10adc3949ba59abbe56e057f20f883e','123456','1','2016-07-29 10:40:55','1','2016-07-29 10:40:57','0');
insert  into `users`(`id`,`username`,`password`,`password_salt`,`create_by`,`create_time`,`update_by`,`update_time`,`is_delete`) values (2,'wang','e10adc3949ba59abbe56e057f20f883e','123456','1','2016-07-29 10:41:30','1','2016-07-29 10:41:32','0');
/** Table structure for table `user_roles` */
CREATE TABLE `user_roles` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(20) DEFAULT NULL COMMENT '用户名',
  `role_name` varchar(50) DEFAULT NULL COMMENT '角色',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `is_delete` char(1) DEFAULT '0' COMMENT '删除标识(0:正常;1:已删除)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
/** Data for the table `user_roles` */
insert  into `user_roles`(`id`,`username`,`role_name`,`create_by`,`create_time`,`update_by`,`update_time`,`is_delete`) values (1,'lucl','admin','1','2016-07-29 10:44:33','1','2016-07-29 10:44:36','0');
/** Table structure for table `roles_permissions` */
CREATE TABLE `roles_permissions` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `role_name` varchar(50) DEFAULT NULL COMMENT '角色',
  `permission` varchar(20) DEFAULT NULL COMMENT '权限',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `is_delete` char(1) DEFAULT '0' COMMENT '删除标识(0:正常;1:已删除)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/** Data for the table `roles_permissions` */
insert  into `roles_permissions`(`id`,`role_name`,`permission`,`create_by`,`create_time`,`update_by`,`update_time`,`is_delete`) values (1,'admin','user:*','1','2016-07-29 10:45:54','1','2016-07-29 10:45:57','0');
insert  into `roles_permissions`(`id`,`role_name`,`permission`,`create_by`,`create_time`,`update_by`,`update_time`,`is_delete`) values (2,'admin','system:edit:1','1','2016-07-29 10:46:08','1','2016-07-29 10:46:10','0');
insert  into `roles_permissions`(`id`,`role_name`,`permission`,`create_by`,`create_time`,`update_by`,`update_time`,`is_delete`) values (3,'audit','system:log:*','1','2016-07-29 10:46:45','1','2016-07-29 10:46:49','0');  

  web.xml

    shiroConfigLocations
    classpath:shiro/jdbc-shiro.ini
  Servlet及Jsp同之前的。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637015-1-1.html 上篇帖子: Apache Shiro学习笔记(五)Web集成扩展 下篇帖子: 安装appser或Apache时出现0xc00000b错误的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表