A) 上篇中用户名和密码直接写在配置文件中,而实际项目中我们是放在数据库中的。

好吧 . 开始把用户信息 和权限 放入 数据库 (oracle)

 

1.建表 

 

Sql代码 Spring Security 学习(3) _学习 Spring Security 学习(3) _3_02
  1. --用户表   
  2. create table users(   
  3.        username varchar2(50) not null primary key ,   
  4.        password varchar2(50) not null,   
  5.        enabled char(1) not null --是否禁用   
  6. );   
  7.   
  8. -- 用户权限表   
  9. create table authorities(   
  10.        username varchar2(50) not null,   
  11.        authority varchar2(50) not null  
  12. );   
  13.   
  14. --外键    
  15. alter table authorities    
  16. add constraint fk_username foreign key (username) references users(username);   
  17.   
  18. --唯一索引   
  19. create unique index ix_auth_username on authorities (username,authority);   
  20.   
  21. --插入测试数据.    
  22. INSERT INTO users(username,PASSWORD,enabled)   
  23. VALUES('admin','21232f297a57a5a743894a0e4a801fc3',1);   
  24. INSERT INTO users(username,PASSWORD,enabled)   
  25. VALUES('user','ee11cbb19052e40b07aac0ca060c23ee',1);   
  26.     
  27. INSERT INTO authorities VALUES('admin','ROLE_ADMIN');   
  28. INSERT INTO authorities VALUES('user','ROLE_USER');   
  29.   
  30.   
  31. select * from users   
  32.   
  33. select * from authorities  

 

 

2.添加Jar 包 

commons-dbcp-1.2.2.jar,commons-pool-1.3.jar,ojdbc6.jar,spring-jdbc-2.5.6.jar

 

3.配置.(applicationContext.xml)

 

Xml代码 Spring Security 学习(3) _学习 Spring Security 学习(3) _3_02
  1. <!-- 数据库连接池 (DBCP) -->  
  2. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  3.     destroy-method="close">  
  4.     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />  
  5.     <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:houserent" />  
  6.     <property name="username" value="spring" />  
  7.     <property name="password" value="bdqn" />  
  8. </bean>  
  9.   
  10.   
  11. <!--配置认证管理器 -->  
  12. <security:authentication-manager>  
  13.     <security:authentication-provider>  
  14.         <security:password-encoder hash="md5" />  
  15.         <!--指定了数据源-->  
  16.         <security:jdbc-user-service  
  17.             data-source-ref="dataSource" />  
  18.         <!-- <security:user-service> -->  
  19.         <!-- <security:user name="user" password="ee11cbb19052e40b07aac0ca060c23ee" -->  
  20.         <!-- authorities="ROLE_USER" /> -->  
  21.         <!-- </security:user-service> -->  
  22.     </security:authentication-provider>  
  23. </security:authentication-manager>  

 

 

现在就可以 测试 登陆信息 是来自数据库了.

 

遗留下来的问题 :

 实际项目中需要将这些放到数据数据库中,那么这些信息在数据库中的表结构是什么,能不能自己定义呢?spring Security将表结构已经定义好了,我们可以参考 发行文档中的.  继续学习中....