前几天学习了,直接在XML中配置用户密码,利用spring security 登录的例子。这种方式适合做演示,真实的项目在大多数情况下都会用数据库或者LDAP来做用户管理. 所以今天继续学习利用数据库方式配置用户登录, 在前面例子的基础上做,最主要的改变如下:
增加数据库相关的jar包
所有用到的jar包如下,有可能有多余的.
程序代码
代码如下 | 复制代码 |
antlr-2.7.7.jar aopalliance.jar commons-logging-1.1.jar jstl-1.1.2.jar mysql-connector-java-3.1.12-bin.jar spring-aop-3.2.4.RELEASE.jar spring-aspects-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-context-3.2.4.RELEASE.jar spring-context-support-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE.jar spring-jdbc-3.2.4.RELEASE.jar spring-security-config-3.1.4.RELEASE.jar spring-security-core-3.1.4.RELEASE.jar spring-security-web-3.1.4.RELEASE.jar spring-tx-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-webmvc-3.2.4.RELEASE.jar standard-1.1.2.jar
|
新建数据库,并插入测试数据
数据库脚本如下
程序代码
代码如下 | 复制代码 |
Create TABLE `users` ( `USER_ID` INT(10) UNSIGNED NOT NULL, `USERNAME` VARCHAR(45) NOT NULL, `PASSWORD` VARCHAR(45) NOT NULL, `ENABLED` tinyint(1) NOT NULL, PRIMARY KEY (`USER_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Create TABLE `user_roles` ( Insert INTO users (USER_ID, USERNAME,PASSWORD, ENABLED) Insert INTO user_roles (USER_ROLE_ID, USER_ID,AUTHORITY)
|
这样在数据库security 中就建立了 users 表以及 user_roles表,并插入了记录.
配置spring securtiy 的数据库认证方式
程序代码
代码如下 | 复制代码 |
<authentication-manager> <authentication-provider> <jdbc-user-service data-source-ref="dataSource" users-by-username-query=" select username,password, enabled from users where USERNAME=?" authorities-by-username-query=" select u.username, ur.authority from users u, user_roles ur where u.user_id = ur.user_id and u.username =? " /> </authentication-provider> </authentication-manager>
|
启动程序,运行结果如下,
程序代码下载 ,去掉了jar包,自己添加,完整实例下载:http://file.111cn.net/download/2013/12/a35.zip