Shiro学习之JdbcRealm
来源:互联网 发布:nginx限制返回大小 编辑:程序博客网 时间:2024/06/05 08:01
JDBC Realm使用
1、数据库及依赖
<dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> <dependency> <groupId>org.gatein.common</groupId> <artifactId>common-logging</artifactId> <version>2.2.2.Final</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging-api</artifactId> <version>1.1</version> </dependency> </dependencies>
本文将使用mysql数据库及c3p0连接池;
2、到数据库shiro下建三张表:users(用户名/密码)
DROP TABLE IF EXISTS `users`;CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
并插入一条数据(1,yyt,123)
3、ini配置(shiro_JDBC.ini)
[main]#声明一个realmjdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm#声明一个数据库连接池 并设置好参数dataSource=com.mchange.v2.c3p0.ComboPooledDataSourcedataSource.driverClass=com.mysql.jdbc.DriverdataSource.jdbcUrl=jdbc:mysql://localhost:3306/shirodataSource.user=rootdataSource.password=kingdee#将dataSource设置给jdbcRealmjdbcRealm.dataSource=$dataSource#将jdbcRealm设置给securityManager.realmssecurityManager.realms=$jdbcRealm
配置意思解释:
- 变量名=全限定类名会自动创建一个类实例
- 变量名.属性=值 自动调用相应的setter方法进行赋值
- $变量名 引用之前的一个对象实例
测试代码:
package com.kingsky;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.UsernamePasswordToken;import org.apache.shiro.config.IniSecurityManagerFactory;import org.apache.shiro.mgt.SecurityManager;import org.apache.shiro.subject.Subject;import org.apache.shiro.util.Factory;public class JdbcShiro { public static void main(String[] args) { //读取配置文件,初始化SecurityManager工厂 Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro_JDBC.ini"); //获取到SecurityManager实例 SecurityManager securityManager=factory.getInstance(); //把SecurityManager绑定到SecurityUtils中 SecurityUtils.setSecurityManager(securityManager); //得到当前用户 Subject subject=SecurityUtils.getSubject(); //创建Token令牌,用户名/密码 UsernamePasswordToken passwordToken=new UsernamePasswordToken("yyt", "123"); //验证登录 会抛出异常 try { subject.login(passwordToken); System.out.println("身份验证成功!!!"); } catch (AuthenticationException e) { e.printStackTrace(); System.out.println("身份验证失败!!!!"); } //退出登录 subject.logout(); }}
查看控制台输出,输入验证成功
0 0
- Shiro学习之JdbcRealm
- shiro jdbcRealm
- Shiro Jdbcrealm
- Shiro 学习笔记(2)—— JdbcRealm
- shiro.ini文件之mysql/sql server的jdbcrealm配置
- shiro与spring整合直接使用jdbcRealm
- Shiro中使用jdbcRealm的ini文件配置出错
- Shiro学习之身份验证
- Shiro学习之HelloWord
- Shiro源码学习之ShiroFilter
- Shiro源码学习之二
- Shiro学习之权限认证
- shiro学习之路——shiro简介
- shiro学习之路(1)---初识shiro(Hello Word)
- shiro 之 Shiro 标签
- Shiro-学习总结-认证之自定义realm
- shiro学习之路(3)----自定义Realm
- shiro学习之路(5)------集成Web
- 合并区间
- java中读取文件内容,如读取.properties文件
- C++ prime plus学习点滴记录
- 怎么实现springMVC 多线程并发
- 函数的参数与返回值
- Shiro学习之JdbcRealm
- 今天偷懒了
- 带表头的循环链表
- 1045. Favorite Color Stripe (30)
- 完美解决Invalid layout of java.lang.String at value问题的方法
- AutoTools 疑难解决方法
- Jsp动态网站初步项目 --简单的商品浏览页面 (登录功能一)
- Cimage类处理图像像素(数据)的3种方式
- AOP