- 浏览: 10584 次
-
最新评论
在企业应用中,用户的用户名、密码和角色等信息一般存放在RDBMS(关系数据库)中。前面几节我们采用的是InMemoryDaoImpl,即基于内存的存放方式。这节我们将采用RDBMS存储用户信息。
UserDetailsService的接口实现有JdbcDaoImpl和InMemoryDaoImpl。JdbcDaoImpl通过数据库获取用户名、密码和角色信息,它将是接下来的重点内容。
1、简单JdbcDaoImpl配置
默认时, JdbcDaoImpl会采用如下SQL获得用户名、密码、启用状态:
SELECT username, password, enabled From users WHERE username=?
类似地, JdbcDaoImpl会采用如下SQL获得用户的授权信息(角色集合):
SELECT username, authority FROM authorities WHERE username=?
所以, 只要数据库中有这两个表和相应字段, 那么只需这样配置:
Xml代码 收藏代码
在这里,我们只需提供dataSource(数据源)的配置信息,并将dataSource注入到JdbcDaoImpl中。
2、Hsqldb使用配置
Hsqldb 是一个优秀的轻量级开源的纯Java SQL 数据库,大家可以从Hsqldb 官方网站(http://hsqldb.org)获取到Hsqldb 的发布包、源代码和文档。
转自他人的简单使用教程:
初用 hsqldb
今天初了下 hsqldb
下载 hsqldb
http://sourceforge.net/project/showfiles.php?group_id=23316
下载 hsqldb_1_8_0_7.zip
解压到 D:/hsqldb
在 D:/hsqldb 目录下创建 runxdb.bat 文件如下:
cd data
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 xdb -dbname.0 xdb
然后双击 runxdb.bat 启动 hsqldb Server
到目录 demo 下运行 runManagerSwing.bat 来创建表
type : HSQL Database Engine Server
url : jdbc:hsqldb:hsql://localhost/xdb
user : SA
建表:
CREATE MEMORY TABLE TEXT(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR);
添加数据:
INSERT INTO TEXT VALUES(1,'chenlb')
INSERT INTO TEXT VALUES(2,'Tenny')
Java 文件
Java代码 收藏代码
本节中用到的数据库脚本:
数据源配置:
Xml代码 收藏代码
在源代码中,我提供了相应脚本,存放在Acegi5\WebRoot\rdbms目录下。
启动hsqldb数据库只须在rdbms目录下运行server.bat文件,内容为:
"%JAVA_HOME%/bin/java" -classpath ..\WEB-INF\lib\hsqldb.jar org.hsqldb.Server -database acegidb
进入hsqldb客户端管理工具请运行manager.bat文件,内容为:
"%JAVA_HOME%/bin/java" -classpath ..\WEB-INF\lib\hsqldb.jar org.hsqldb.util.DatabaseManager
实际调试我们可以根据实际情况进行修改。
3、自定义SQL语句
在开发实际企业应用期间,用户信息的获取方式往往是千差万别的,所以可能不存在users、authorities表和相应名字的属性。考虑到这方面的需求,Acegi的JdbcDaoImpl为我们暴露了usersByUsernameQuery和authoritiesByUsernameQuery属性,它们分别用于自定义SQL语句,获取系统用户和授权信息。
此时jdbcDaoImpl配置如:
Xml代码 收藏代码
4、说明
开发环境:
MyEclipse 5.0GA
Eclipse3.2.1
JDK1.5.0_10
tomcat5.5.23
acegi-security-1.0.7
Spring2.0
Jar包:
acegi-security-1.0.7.jar
Spring.jar(2.0.8)
commons-codec.jar
jstl.jar (1.1)
standard.jar
commons-logging.jar(1.0)
hsqldb.jar(1.8.0.10)
UserDetailsService的接口实现有JdbcDaoImpl和InMemoryDaoImpl。JdbcDaoImpl通过数据库获取用户名、密码和角色信息,它将是接下来的重点内容。
1、简单JdbcDaoImpl配置
默认时, JdbcDaoImpl会采用如下SQL获得用户名、密码、启用状态:
SELECT username, password, enabled From users WHERE username=?
类似地, JdbcDaoImpl会采用如下SQL获得用户的授权信息(角色集合):
SELECT username, authority FROM authorities WHERE username=?
所以, 只要数据库中有这两个表和相应字段, 那么只需这样配置:
Xml代码 收藏代码
<span style="font-size: small;"><bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="jdbcDaoImpl" /> ... </bean> <bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> </span>
在这里,我们只需提供dataSource(数据源)的配置信息,并将dataSource注入到JdbcDaoImpl中。
2、Hsqldb使用配置
Hsqldb 是一个优秀的轻量级开源的纯Java SQL 数据库,大家可以从Hsqldb 官方网站(http://hsqldb.org)获取到Hsqldb 的发布包、源代码和文档。
转自他人的简单使用教程:
初用 hsqldb
今天初了下 hsqldb
下载 hsqldb
http://sourceforge.net/project/showfiles.php?group_id=23316
下载 hsqldb_1_8_0_7.zip
解压到 D:/hsqldb
在 D:/hsqldb 目录下创建 runxdb.bat 文件如下:
cd data
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 xdb -dbname.0 xdb
然后双击 runxdb.bat 启动 hsqldb Server
到目录 demo 下运行 runManagerSwing.bat 来创建表
type : HSQL Database Engine Server
url : jdbc:hsqldb:hsql://localhost/xdb
user : SA
建表:
CREATE MEMORY TABLE TEXT(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR);
添加数据:
INSERT INTO TEXT VALUES(1,'chenlb')
INSERT INTO TEXT VALUES(2,'Tenny')
Java 文件
Java代码 收藏代码
package hsqldb; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * * @author chenlb 2007-4-28 * */ public class HsqldbFirstSimple { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { Class.forName("org.hsqldb.jdbcDriver" ); } catch (Exception e) { System.out.println("ERROR: failed to load HSQLDB JDBC driver."); e.printStackTrace(); return; } try { Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "sa", ""); Statement stmt = c.createStatement(); ResultSet rs = stmt.executeQuery("select * from text"); while(rs.next()) { System.out.println(rs.getString(1)+"\t"+rs.getString(2)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
本节中用到的数据库脚本:
CREATE SCHEMA PUBLIC AUTHORIZATION DBA CREATE MEMORY TABLE USERS(USERNAME VARCHAR_IGNORECASE(50) NOT NULL PRIMARY KEY,PASSWORD VARCHAR_IGNORECASE(50) NOT NULL,ENABLED BOOLEAN NOT NULL) CREATE MEMORY TABLE AUTHORITIES(USERNAME VARCHAR_IGNORECASE(50) NOT NULL,AUTHORITY VARCHAR_IGNORECASE(50) NOT NULL,CONSTRAINT FK_AUTHORITIES_USERS FOREIGN KEY(USERNAME) REFERENCES USERS(USERNAME)) CREATE USER SA PASSWORD "" GRANT DBA TO SA SET WRITE_DELAY 20 SET SCHEMA PUBLIC INSERT INTO USERS VALUES('javaee','password',TRUE) INSERT INTO USERS VALUES('qiuzj','password',FALSE) INSERT INTO USERS VALUES('sam','password',TRUE) INSERT INTO AUTHORITIES VALUES('javaee','ROLE_SUPERVISOR') INSERT INTO AUTHORITIES VALUES('sam','ROLE_USER') INSERT INTO AUTHORITIES VALUES('qiuzj','ROLE_SUPERVISOR')
数据源配置:
Xml代码 收藏代码
<beans> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>org.hsqldb.jdbcDriver</value> </property> <property name="url"> <value>jdbc:hsqldb:hsql://localhost/</value> </property> <property name="username"> <value>sa</value> </property> <property name="password"> <value></value> </property> </bean> </beans>
在源代码中,我提供了相应脚本,存放在Acegi5\WebRoot\rdbms目录下。
启动hsqldb数据库只须在rdbms目录下运行server.bat文件,内容为:
"%JAVA_HOME%/bin/java" -classpath ..\WEB-INF\lib\hsqldb.jar org.hsqldb.Server -database acegidb
进入hsqldb客户端管理工具请运行manager.bat文件,内容为:
"%JAVA_HOME%/bin/java" -classpath ..\WEB-INF\lib\hsqldb.jar org.hsqldb.util.DatabaseManager
实际调试我们可以根据实际情况进行修改。
3、自定义SQL语句
在开发实际企业应用期间,用户信息的获取方式往往是千差万别的,所以可能不存在users、authorities表和相应名字的属性。考虑到这方面的需求,Acegi的JdbcDaoImpl为我们暴露了usersByUsernameQuery和authoritiesByUsernameQuery属性,它们分别用于自定义SQL语句,获取系统用户和授权信息。
此时jdbcDaoImpl配置如:
Xml代码 收藏代码
<bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="usersByUsernameQuery"> <value> SELECT username, password, enabled From users WHERE username=? </value> </property> <property name="authoritiesByUsernameQuery"> <value> SELECT username, authority FROM authorities WHERE username=? </value> </property> </bean>
4、说明
开发环境:
MyEclipse 5.0GA
Eclipse3.2.1
JDK1.5.0_10
tomcat5.5.23
acegi-security-1.0.7
Spring2.0
Jar包:
acegi-security-1.0.7.jar
Spring.jar(2.0.8)
commons-codec.jar
jstl.jar (1.1)
standard.jar
commons-logging.jar(1.0)
hsqldb.jar(1.8.0.10)
发表评论
-
SpringSecurity 配置(登陆验证,session失效等等)
2015-09-28 15:44 2807SpringSecurity安全配置—SSH整合 项目中使用 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息
2015-09-23 18:04 497首先讲讲EhCache。在默认情况下,即在用户未提供自身配置文 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(5)
2015-09-22 16:18 502在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(4)
2015-09-22 09:45 535今天就讲个ConcurrentSessionFilter。 在 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(3)
2015-09-22 09:43 521这一节我们将要了解的是AnonymousProcessi ... -
菜鸟-手把手教你把Acegi应用到实际项目中(1.2)
2015-09-22 09:29 536菜鸟-手把手教你把Acegi应用到实际项目中(1.2) 博客 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(1.1)
2015-09-21 16:37 498菜鸟-手把手教你把Acegi应用到实际项目中(1.1) 博客 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(2)
2015-09-21 16:28 548菜鸟-手把手教你把Acegi应用到实际项目中(2) 博客分类 ... -
使用ACEGI搭建权限系统
2015-09-21 16:25 487使用ACEGI搭建权限系统:第三部分 三使用CAS实现单点登 ... -
acegi安全框架使用
2015-09-21 16:20 502acegi安全框架使用:第二部分 二、dbms实现鉴权 1. ... -
使用ACEGI实现权限控制
2015-09-21 16:10 555使用ACEGI实现权限控制,第一部分 环境: struts ...
相关推荐
在“菜鸟-手把手教你把Acegi应用到实际项目中(3)”这篇博文中,博主可能会深入讲解如何将 Acegi 集成到实际的项目中,为读者提供一个逐步的指南。下面,我们将探讨 Acegi 的核心概念、配置以及在项目中的应用。 1. ...
本教程将引导初学者逐步了解如何在实际项目中应用Acegi安全框架,以便为你的Web应用提供强大的身份验证和授权功能。 首先,让我们理解Acegi的基础概念。Acegi的核心组件包括SecurityContext、Authentication和...
在本文中,我们将深入理解如何将Acegi应用到实际项目中,特别关注其核心配置——web.xml中的过滤器设置和Acegi安全文件的配置。 首先,我们来看web.xml中的过滤器配置: 1. **FilterToBeanProxy**:Acegi通过...
scratch少儿编程逻辑思维游戏源码-皮博冒险者.zip
少儿编程scratch项目源代码文件案例素材-这是之前下载的测试.zip
scratch少儿编程逻辑思维游戏源码-汽车冲突.zip
scratch少儿编程逻辑思维游戏源码-梦幻岛 3D.zip
scratch少儿编程逻辑思维游戏源码-收集水果.zip
炫酷蓝色响应式投稿说明源码.zip
机器学习算法与应用大作业-基于预处理的小麦品种的分类和聚类源码+数据+使用说明.zip是个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。。内容来源于网络分享,如有侵权请联系我删除。
vs2019_Qt5.12.12编译好的ffmpeg库,因为是c接口,别的版本理论也可以用
scratch少儿编程逻辑思维游戏源码-欧力多.zip
少儿编程scratch项目源代码文件案例素材-越野运动员.zip
GUI开发_CMake_MSVC_CLion_ElaWidgetTools_跨平台界面组件库_简化项目结构_降低上手难度_提供完整编译环境配置_支持Windows11开发_快速集成
scratch少儿编程逻辑思维游戏源码-时间先生.zip
少儿编程scratch项目源代码文件案例素材-爪猫使命召唤.zip
内容管理系统_SpringBootThymeleaf双引擎解析_梦想家CMS开源建站系统_面向政府企业组织快速搭建展示型网站如企业官网技术博客信息门户等解决建站成本高周期长问题
健康监测与运动数据自动化_云函数部署与定时任务管理_乐心健康APP账号绑定与步数同步_通过腾讯云函数和青龙面板实现自动刷步并同步至蚂蚁森林获取每日296g能量的智能脚本系统_适用于
动态雨滴玻璃掉落个人主页源码.rar
scratch少儿编程逻辑思维游戏源码-鸟群算法.zip