第二章----3,使用数据库作为数据源
2018-01-26 15:13
197 查看
之前把用户名密码配置到了shiro.ini这些配置文件中,现在把它们放到数据库中。
我们的做法就是在配置文件中 使用支持数据库的数据源Realm, 就是JdbcRealm。
现在只是简单的判断一下登录的帐号和密码,因此数据库的表很简单,
数据库的名字是shiro,表名是users
来验证吧,源码在本博客最早的一章已经给了。
首先是jdbc.ini配置文件,如果你用过Spring,下面的注册每个类的属性其实很好理解,在最后注入的是合作者Bean
[main]
#这里可以视为伪代码,右边是一个类的类名,左边是这个类的一个对象。
#比如现在,就可以看做是创建了一个JdbcRealm类的一个对象jdbcRealm
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
#注入对象的属性
#创建数据源对象,就像在Spring配置文件中创建dataSource一样
dataSource=com.alibaba.druid.pool.DruidDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/shiro
dataSource.username=root
#密码每个电脑不一样
dataSource.password=
#注入合作者Bean
#把dataSource注入到jdbcRealm中去
jdbcRealm.dataSource=$dataSource
#把jdbcRealm注入到安全中心中
securityManager.realms=$jdbcRealm
测试
@Test
public void test3() {
//加载配置文件,并获取工厂,这个SecurityManager可能与java.lang包下的SecurityManager冲突,因此加上泛型
Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:jdbc.ini");
//获取shiro的核心SecurityManager对象
org.apache.shiro.mgt.SecurityManager sm = factory.getInstance();
//将安全管理者SecurityManager放入全局对象SecurityUtils
SecurityUtils.setSecurityManager(sm);
//全局对象用SecurityManager来生成与用户交互的Subject对象
Subject subject = SecurityUtils.getSubject();
//封装用户的数据
UsernamePasswordToken token = new UsernamePasswordToken("jay", "123");
//将封装用户的标识token 与 数据源 进行对比认证
subject.login(token);
//判断本帐号是否已经被认证
Assert.assertEquals(true, subject.isAuthenticated());
}
我们的做法就是在配置文件中 使用支持数据库的数据源Realm, 就是JdbcRealm。
现在只是简单的判断一下登录的帐号和密码,因此数据库的表很简单,
数据库的名字是shiro,表名是users
来验证吧,源码在本博客最早的一章已经给了。
首先是jdbc.ini配置文件,如果你用过Spring,下面的注册每个类的属性其实很好理解,在最后注入的是合作者Bean
[main]
#这里可以视为伪代码,右边是一个类的类名,左边是这个类的一个对象。
#比如现在,就可以看做是创建了一个JdbcRealm类的一个对象jdbcRealm
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
#注入对象的属性
#创建数据源对象,就像在Spring配置文件中创建dataSource一样
dataSource=com.alibaba.druid.pool.DruidDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/shiro
dataSource.username=root
#密码每个电脑不一样
dataSource.password=
#注入合作者Bean
#把dataSource注入到jdbcRealm中去
jdbcRealm.dataSource=$dataSource
#把jdbcRealm注入到安全中心中
securityManager.realms=$jdbcRealm
测试
@Test
public void test3() {
//加载配置文件,并获取工厂,这个SecurityManager可能与java.lang包下的SecurityManager冲突,因此加上泛型
Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:jdbc.ini");
//获取shiro的核心SecurityManager对象
org.apache.shiro.mgt.SecurityManager sm = factory.getInstance();
//将安全管理者SecurityManager放入全局对象SecurityUtils
SecurityUtils.setSecurityManager(sm);
//全局对象用SecurityManager来生成与用户交互的Subject对象
Subject subject = SecurityUtils.getSubject();
//封装用户的数据
UsernamePasswordToken token = new UsernamePasswordToken("jay", "123");
//将封装用户的标识token 与 数据源 进行对比认证
subject.login(token);
//判断本帐号是否已经被认证
Assert.assertEquals(true, subject.isAuthenticated());
}
相关文章推荐
- Visual Studio LightSwitch 使用数据库作为数据源,发布后出现404错误
- Jasper+ireport动态报表学习(二)使用数据库作为数据源进行报表绘制
- Android创建自定义视图列表对话框(数据库中的数据作为数据源,使用RecyclerView作为列表)
- TX Text Control X10独家揭秘之使用对象作为数据源
- java使用JNDI 获取weblogic配置的数据源 连接数据库
- iReport 笔记(四) 使用JDBC作为数据源 【转】
- WPF - 使用XML作为datagrid数据源进行binding
- .NET : 在单元测试中使用外部文件作为数据源
- docker 实战---使用oracle xe作为开发数据库(六)
- (七)webStorage使用实例——webStorage作为简易数据库来使用
- 使用GUID作为数据库主键的测试
- [翻译]如何使用webservice作为数据源去生成Microsoft Reporting Services 2005的报表
- 如何使用WSRR作为Web服务唯一数据源
- 可以在mono下运行的一个ajax web小程序,使用PostgreSQL作为数据库(期待MonoDevelop 2.0)
- SSRS使用MySql作为数据源遇到的问题。
- 数据库连接池的使用(C3P0实现多数据源的数据库连接池)
- 使用GUID作为数据库主键的测试
- java使用JNDI 获取weblogic配置的数据源 连接数据库
- 当使用EntityDataSource作为GridView的数据源时,在RowDataBound事件处理方法中得到对应当前行的实体对象
- 使用Data Template作为BIP报表的数据源