`

SSH项目中加入spring security(二)--加入自定义数据表

阅读更多

上一篇中基本的spring security已经加入到项目当中,本篇将spring security链接数据库

 

首先,将数据表插入到数据库当中


创建用户表、角色表、用户角色表,并插入跟上一篇相对应的数据

我项目当中Id用的是char(32),这里就不修改了,可以按照自己项目目前的结构进行修改。

Sql代码  收藏代码
  1. CREATE TABLE `user_role` (  
  2.   `id` char(32) NOT NULL,  
  3.   `role_id` char(32) DEFAULT NULL,  
  4.   `user_id` char(32) DEFAULT NULL,  
  5.   `create_date` datetime DEFAULT NULL,  
  6.   PRIMARY KEY (`id`)  
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  8.   
  9. insert  into ` user_role `(`id`,`role_id`,`user_id`,`create_date`) values ('402846814019e1b0014019e27eed0000','402846814019e1b0014019e27eed0000','402846814019e1b0014019e27eed0000','2013-07-29 00:00:00'),('402846814019e1b0014019e27eed0001','402846814019e1b0014019e27eed0001','402846814019e1b0014019e27eed0000','2013-07-29 00:00:00'),('402846814019e1b0014019e27eed0002','402846814019e1b0014019e27eed0001','402846814019e1b0014019e27eed0001','2013-07-29 00:00:00');  
  10.   
  11. CREATE TABLE `role ` (  
  12.   `id` char(32) NOT NULL,  
  13.   `role_no` varchar(4) DEFAULT NULL,  
  14.   `role_name` varchar(128) DEFAULT NULL,  
  15.   `role_des` varchar(512) DEFAULT NULL,  
  16.   `disable` tinyint(1) DEFAULT '0',  
  17.   `creat_date` datetime DEFAULT NULL,  
  18.   PRIMARY KEY (`id`)  
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  20.   
  21. insert  into `role`(`id`,`role_no`,`role_name`,`role_des`,`disable`,`creat_date`) values ('402846814019e1b0014019e27eed0000','1','ROLE_ADMIN','管理员角色',0,NULL),('402846814019e1b0014019e27eed0001','2','ROLE_USER','用户角色',0,NULL);  
  22.   
  23. CREATE TABLE `user` (  
  24.   `id` char(32) NOT NULL,  
  25.   `username` varchar(64) DEFAULT NULL,  
  26.   `pwd` varchar(64) DEFAULT NULL,  
  27.   `enabled` int(11) NOT NULL DEFAULT '1',  
  28.   PRIMARY KEY (`id`)  
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  30.   
  31. insert  into `user`(`id`,`username`,`pwd`,`enabled`) values ('402846814019e1b0014019e27eed0000','admin','admin',1),('402846814019e1b0014019e27eed0001','sozhike','111111',1);  

 

查询用户帐户的sql

 

Sql代码  收藏代码
  1. select u.username,u.pwd,u.enabled  
  2. from user as u  
  3. where u.username = 'admin'  

 

 

查询用户权限的sql

 

Sql代码  收藏代码
  1. select u.username,r.role_name  
  2. from user as u  
  3. join user_role as p  
  4. on u.id = p.user_id  
  5. join role as r  
  6. on r.id = p.role_id  
  7. where u.username = 'admin'  

 

注意:

上面的sql,返回的结构不能修改,不然会抛出错误哦。也就是查询用户的时候,需要返回用户名+密码+是否启用,查询用户权限时,需要返回用户名+role名

 

修改applicationContext-security.xml

 

Xml代码  收藏代码
  1. <authentication-manager>  
  2.         <authentication-provider>  
  3.             <user-service>  
  4.                 <user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />  
  5.                 <user name="sozhike" password="111111" authorities="ROLE_USER" />  
  6.             </user-service>  
  7.         </authentication-provider>  
  8.     </authentication-manager>  

 

 

改为

Xml代码  收藏代码
  1. <authentication-manager>  
  2.         <authentication-provider>  
  3.             <jdbc-user-service data-source-ref="dataSource"  
  4.             users-by-username-query="select u.username,u.pwd,u.enabled  
  5.                                     from user as u  
  6.                                     where u.username = ?"  
  7.             authorities-by-username-query="select u.username,r.role_name  
  8.                                         from user as u  
  9.                                         join user_role as p  
  10.                                         on u.id = p.user_id  
  11.                                         join role as r  
  12.                                         on r.id = p.role_id  
  13.                                         where u.username = ?"/>  
  14.         </authentication-provider>  
  15.     </authentication-manager>  

 

重启项目,用第一篇的数据测试,OK啦

原创文章,转载请标明出处(http://sunliyings17.iteye.com/blog/1915008),谢谢

 

未完待续.....

分享到:
评论

相关推荐

    spring-security-oauth-master

    在Spring Boot项目中,可以通过以下方式配置Spring Security OAuth2: 1. 添加依赖:引入`spring-security-oauth2-server`和`spring-security-oauth2-client`库。 2. 配置OAuth2服务器:创建`...

    ssh项目添加spring Security

    在这个项目中,我们将探讨如何将Spring Security集成到SSH项目中,实现基于数据库验证的用户授权登录功能。 首先,Spring Security是Spring生态体系中的一个核心组件,主要用于提供认证和授权服务,确保Web应用的...

    Spring集成SpringSecurity依赖包

    标题中提到的"Spring集成SpringSecurity依赖包"应该包含了这些必要的依赖,包括Spring Security本身和可能的Spring MVC依赖。 2. **配置Spring Security**:创建一个配置类,继承自`WebSecurityConfigurerAdapter`...

    spring Security整合SSH

    在本项目中,我们将探讨如何将Spring Security与SSH(Struts2、Spring、Hibernate)框架整合,以实现一个完整的基于数据库的用户认证和授权系统。 SSH是Java开发中常用的三大框架组合,它们各自负责不同的职责:...

    spring-security-3.0.5.RELEASE

    在Spring Security 3.0.5.RELEASE版本中,我们看到了一系列稳定且强大的安全特性,这些特性对于开发人员构建安全的SSH(Spring、Struts和Hibernate)应用程序至关重要。 一、Spring Security基础 1. **认证机制**...

    ssh整合spring Security

    3. **配置整合**:在SSH项目中,我们需要在struts2的配置文件中添加Spring Security的过滤器链,如`&lt;filter&gt;`标签,以及在Spring的配置文件中定义Spring Security的相关bean,如`http`、`authentication-manager`等...

    SSH+Spring Security+MySQL

    在实际项目中,SSH+Spring Security+MySQL的集成可能涉及以下步骤: 1. 配置Struts2和Spring Security的拦截器,确保请求被正确地路由和过滤。 2. 设计并实现用户实体类、角色实体类以及它们之间的关联,使用...

    Spring Security 文档

    在第一种方法中,Spring Security的示例项目`spring-security-samples-tutorial-3.0.2.RELEASE`提供了硬编码配置的参考,它演示了如何在XML配置文件中定义用户、密码和权限。这种方法适合初学者快速了解Spring ...

    ssh+security实现权限管理

    在"ssh+security"的组合中,SSH可能指的是服务器端的身份验证和加密通信,而Spring Security则负责应用层的权限管理和访问控制。这种结合可以构建一个强大的权限管理系统,不仅保护了网络通信的安全,还确保了用户对...

    oauth2-client-springsecurity5.zip

    总之,“oauth2-client-springsecurity5.zip”项目提供了一个实战案例,演示了如何在Spring Boot应用中集成OAuth2客户端和Spring Security 5,使开发者能够安全、高效地处理用户授权。通过阅读和运行这个示例,你将...

    Spring Security 源码

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制...同时,标签中的"ssh3源码"可能是指Spring Security的旧版本,但现代版本已经更新到Spring Security 5.x,所以要确保查阅的是最新版本的文档和源码。

    spring_security3教程

    在开始这些方法之前,确保你已经搭建了SSH2(Struts2、Spring、Hibernate)的基础环境,并且已经安装了Spring Security 3.0.2及其所需的jar包,包括`spring-security-acl`、`spring-security-config`、`spring-...

    spring security 使用数据库管理资源

    标题 "spring security 使用数据库管理资源" 指的是在Spring Security框架中,通过数据库来存储和管理权限与资源的相关配置。这一做法使得安全控制更为灵活,可以动态地更新和扩展系统的访问控制。Spring Security是...

    springsecurity3.1.3 案例

    在这个"Spring Security 3.1.3案例"中,我们将探讨这个版本的一些核心概念和特性,以及如何利用它们来保护你的应用程序。 首先,让我们了解Spring Security的基本架构。它主要由四个主要组件组成:认证、授权、访问...

    spring-framework-5.1.10.RELEASE.rar【免费】

    在数据访问层,Spring Data JPA和Spring Data MongoDB等子项目提供了与各种数据存储的集成,简化了数据库操作。5.1.10.RELEASE版本可能会包含对JPA规范的最新实现,以及对NoSQL数据库的支持增强。 事务管理是Spring...

    使用Spring_Security3

    在Spring Security 3中,有四种常见的使用方式来实现用户认证和授权。 1. **全配置文件方式**: 在这种模式下,所有的用户信息、权限和资源URL都被硬编码在XML配置文件中。这包括用户账户、他们的密码(通常加密后...

    springsecurity

    在给定的"springsecurity"项目中,我们可以看到一个基于SSH(Spring、Struts2、Hibernate)框架实现的Web应用。SSH框架组合提供了MVC模式、持久层支持和业务逻辑管理,而Spring Security则负责处理安全方面的需求。 ...

    spring security 3权限管理代码

    8. **SSH集成**:SSH(Struts2、Hibernate、Spring)是一个常见的Java Web开发栈,Spring Security可以很好地与Struts2整合,提供统一的安全控制。 9. **数据库集成**:在`springmvc数据库.txt`中,很可能包含了...

    一个ssh项目的例子

    SSH项目是一个基于Java技术栈的Web应用程序实例,它集成了Spring、Struts和Hibernate三个核心框架,用于构建高效、可维护的企业级应用。这个“爱心宠物医院系统”就是这样一个示例,展示了如何在J2EE环境中开发和...

    通用的权限管理,ssh项目中权限管理的一个小示例

    在这个示例项目中,我们有三个关键的数据表: 1. **用户表**:存储用户的登录信息,如用户名、密码和联系方式等。在权限系统中,每个用户都有特定的权限和角色。 2. **权限表**:定义了系统中的各种操作或资源,...

Global site tag (gtag.js) - Google Analytics