`

实现基于Spring框架应用的权限控制系统(讲解)

    博客分类:
  • j2ee
 
阅读更多

实现基于Spring框架应用的权限控制系统

 摘 要 Spring框架是一个优秀的多层J2EE系统框架,Spring本身没有提供对系统的安全性支持。Acegi是基于Spring IOC 和 AOP机制实现的一个安全框架。本文探讨了Acegi安全框架中各部件之间的交互,并通过扩展Acegi数据库设计来实现基于Spring框架的应用的安全控制方法。

  关键词 Spring ;Acegi ;认证; 授权

  引言

  近年来,随着Internet技术的迅猛发展,计算机网络已深入到了人们的工作、学习和日常生活中,于是,怎样构建安全的web应用也成为了当前最热门的话题。Spring是一个基于IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的构架多层J2EE应用系统的框架。Spring框架正在以其优良的特性吸引了越来越多的开发人员的关注,并在大量的系统开发中被使用。然而,现有的Spring框架本身并没有提供对系统安全性的支持,本文通过介绍一种可用于Spring框架中的安全框架Acegi,并对在Spring框架中使用Acegi实现安全用户认证和资源授权控制进行了较深入的研究和扩展,同时给出了可行的解决方案。

  Spring框架和Acegi安全框架介绍

  1、spring 框架

  Spring框架是由Open Source开发的一个优秀的多层J2EE系统框架,它为企业级应用提供了一个非常轻量级的解决方案,大大地降低了应用开发的难度与复杂度,提高了开发的速度。

  Spring框架的核心是IoC和AOP。IoC是一种设计模式,即IoC模式。IoC模式进一步降低了类之间的耦合度,并且改变了传统的对象的创建方法,实现了一种配置式的对象管理方式,Spring框架中由IoC容器负责配置性的对象的管理。IoC模式极大的提高了系统开发与维护的灵活性。

  AOP是一种编程模式,它是从系统的横切面关注问题。传统的面向对象编程OOP主要从系统的垂直切面对问题进行关注,对于系统的横切面关注很少,或者说很难关注,这样当考虑到系统的安全性、日志、事务以及其他企业级服务时,OOP就无能为力了,只能在所有相关类中加入类似的系统服务级的代码。AOP为解决系统级服务问题提供了一种很好的方法。AOP将系统服务分解成方面看待,并为类提供一种声明式系统服务方式。Java类不需要知道日志服务的存在也不需要考虑相关的代码。所以,用AOP编写的应用程序是松耦合的,代码的复用性就提高了。

  2、Acegi 安全框架

  借助于Spring框架,开发者能够快速构建结构良好的WEB应用,但现有的Spring框架本身没有提供安全相关的解决方案。同样来自于Open Source 社区的Acegi安全框架为实现基于Spring框架的WEB应用的安全控制提供了一个很好的解决方案。Acegi本身就是利用Spring提供的IoC和AOP机制实现的一个安全框架,它将安全性服务作为J2EE平台中的系统级服务,以AOP Aspect形式发布。所以借助于Acegi安全框架,开发者能够在Spring使能应用中采用声明式方式实现安全控制。

  Acegi安全框架主要由安全管理对象、拦截器以及安全控制管理组件组成。安全管理对象是系统可以进行安全控制的实体,Acegi框架主要支持方法和URL请求两类安全管理对象;拦截器是Acegi中的重要部件,用来实现安全控制请求的拦截,针对不同的安全管理对象的安全控制请求使用不同的拦截器进行拦截;安全控制管理部件是实际实现各种安全控制的组件,对被拦截器拦截的请求进行安全管理与控制,主要组件包括实现用户身份认证的AuthenticationManager、实现用户授权的AccessDecisionManager 以及实现角色转换的RunAsManager。安全管理对象、拦截器以及安全控制管理组件三者关系如附图1所示。

图1 安全管理对象,拦截器和安全管理组件交互图

 

  Acegi安全框架在基于Spring框架的系统中的应用

  1、分析系统安全性需求

  首先,需要明确进行安全控制的对象,可为业务方法和URL资源。

  其次,需要进一步明确,系统身份认证资料和资源授权信息的数据持久化形式。

  2、Acegi安全系统数据库设计

  在Acegi框架中支持多种安全信息的持久化方式,可以在配置文件中配置或存放在关系数据库。由于在实际应用中,需求是经常发生变化的。所以,在配置文件中配置是满足不了实际应用需求的。然而,Acegi本身对权限表的设计非常简单,users表{username,password,enabled} 和authorities表{username,authority},这样简单的设计肯定无法适用复杂的权限需求。为了解决权限管理的复杂性,在这里引入了role(角色)的概念,使得用户和权限分离,一个用户拥有多个角色,一个角色拥有多个相应的权限,这样就更灵活地支持安全策略。

  同时,为了更好地配合Acegi安全框架,还引入resource(资源)的概念,资源可分为URL和FUNCTION(方法)两种,一个权限可以对应多个资源。具体的数据库设计见博客附图2。

图2 Acegi安全控制系统数据库设计

分享到:
评论

相关推荐

    使用Acegi作为基于Spring框架的WEB应用的安全框架

    "实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.pdf"这份文档详细讲解了如何在实际项目中部署和使用Acegi Security。内容可能包括: - 安装和设置Acegi Security库。 - 创建自定义认证和授权逻辑。 - ...

    Spring框架2016版黑马程序员第一天视频资料

    这些代码可能包含了一系列示例,演示了如何在实际项目中使用Spring框架,如编写Controller处理HTTP请求,配置数据库连接,使用Spring Data JPA进行数据操作,或者使用Spring Security进行权限控制。 4. **资料**:...

    spring整合其他框架

    Spring框架是Java开发中广泛应用的一个轻量级容器,它提供了丰富的功能,允许开发者构建模块化、松耦合的系统。本篇文章将详细讲解Spring如何与其他知名框架进行整合,以实现更高效的应用开发。 1. Spring与...

    SSM框架开发的在线考试系统(spring+spring mvc+mybatis+bootstrap+jquery+jstl)

    此外,Spring的AOP功能可能被用于实现日志记录、权限控制等功能。 2. **SpringMVC**:SpringMVC是Spring框架的一个模块,专门用于处理Web请求。它遵循Model-View-Controller(MVC)设计模式,负责接收HTTP请求,...

    【猿来入此】SSM框架角色权限管理系统脚手架源码

    1. **Spring框架**:Spring作为核心容器,负责管理对象的生命周期和依赖注入。通过XML配置或注解的方式,Spring可以方便地实现对象之间的依赖关系,简化了代码的编写和维护。在权限管理系统中,Spring还常常用于AOP...

    基于SpringMvc+Spring图书信息管理系统

    《基于SpringMvc+Spring图书信息管理系统》是一款采用JavaWeb技术栈构建的轻量级应用,主要利用SpringMvc作为控制器层框架,Spring作为业务层框架,实现了对图书信息的有效管理。这个系统不仅涉及到基本的CRUD操作,...

    基于Java web SSM框架的权限管理系统(源码+数据库).zip

    这是一个基于Java Web的权限管理系统,采用了SSM框架,即Spring、Spring MVC和MyBatis的集成。这个系统提供了源码,方便开发者进行学习和二次开发。下面将详细讲解该系统的组成部分和实现技术。 1. **Spring框架**...

    基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip

    其次,Spring框架是Java企业级应用的核心,提供依赖注入(DI)和面向切面编程(AOP)等功能。在SSH系统中,Spring主要负责管理整个应用的组件,包括Struts2的Action、Hibernate的数据访问对象(DAO)等。通过Spring...

    springboot+security+jwt+mybaits-plus+mysql实现权限管理

    1. Spring Boot:Spring Boot是Spring框架的一个简化版,它通过预配置的starter依赖项和自动配置功能,使得开发人员能够快速搭建应用程序。在这个项目中,Spring Boot作为基础框架,负责应用的初始化、依赖管理和...

    SpringBoot + SpringSecurity + JPA 实现用户角色权限登录认证

    在IT行业中,构建安全的Web应用程序是至关重要的。SpringBoot框架因其便捷的集成特性而备受开发者喜爱,而SpringSecurity则是Spring生态中强大的...这样的系统对于任何需要控制用户访问权限的Web应用都是极其有价值的。

    基于SpringBoot,Spring Security,Vue & naiveUi 实现的前后端分离权限管理简易系统.zip

    Spring Security是Spring框架的一个子项目,用于处理企业级应用的安全需求,包括认证和授权。在这个项目中,Spring Security负责用户身份验证和权限控制,例如登录验证、角色分配、访问控制等,确保只有授权的用户...

    java+springboot+ssm+shiro+mysql实现的mes制造执行系统源码

    本文将详细讲解基于Java、SpringBoot、SSM(Spring、SpringMVC、MyBatis)和Shiro以及MySQL实现的MES(Manufacturing Execution System)制造执行系统的相关知识点。 MES是现代制造业信息化的重要组成部分,用于控制...

    SpringSecurity权限管理系统实战 主要页面及接口实现.docx

    在本文中,我们将探讨如何使用SpringSecurity框架来构建一个权限管理系统,并关注主要页面和接口的实现。SpringSecurity是一个强大的安全框架,它提供了全面的身份验证、授权和服务层保护功能,适用于Web应用程序。 ...

    基于Springboot+Mybatis+SpringMvc+springsecrity+Redis完整网站后台管理系统.zip

    在这个系统中,Spring Security负责用户身份验证和权限控制,确保只有经过授权的用户才能访问特定的资源。 Redis是一个高性能的键值数据库,常用于缓存和消息代理。在本系统中,Redis可能被用作缓存服务器,提高...

    通用后台系统,基于spring mvc,mybatis,Shiro,dwz 实现的

    首先,Spring MVC是Spring框架的一部分,主要负责处理Web应用程序的模型-视图-控制器(MVC)架构。它提供了一个灵活的、非侵入式的编程模型,使得开发者可以轻松地构建可维护的Web应用。在本系统中,Spring MVC可能...

    这是一个使用了springboot+springSecurity+jwt实现的基于token的权限管理的一个demo

    其次,Spring Security是Spring框架的一部分,专门用于处理应用安全问题,包括认证和授权。它提供了一套强大的工具来保护我们的应用程序,例如通过HTTP Basic、Form Login、OAuth2等方式进行用户身份验证,以及基于...

    Spring5框架课堂课件.7z

    它提供了丰富的安全特性,如用户认证、权限控制、CSRF防护等。 9. **Spring Cloud**:在分布式系统中,Spring Cloud为开发者提供了开发微服务所需的各种工具,如服务发现、配置中心、断路器、智能路由、负载均衡等...

    Spring Security 安全权限管理手册 PDF

    《Spring Security 安全权限管理手册》是一本深入解析Spring Security框架的专业指南,对于正在学习或已经在使用Spring框架的开发者来说,它提供了丰富的知识和实践经验。Spring Security是Spring生态系统中的一个...

    毕业论文: 基于Spring Boot的新媒体企业信息化系统设计与实现

    《基于Spring Boot的新媒体企业信息化系统设计与实现》是一篇深度探讨如何利用现代技术构建企业信息系统的毕业论文。本文将围绕Spring Boot这一流行的Java开发框架,深入解析如何将其应用于新媒体企业的信息化建设,...

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》_源代码.zip

    讲解如何配置Spring Security,实现用户登录、角色权限控制等功能。 7. **Chapter 12** - Spring MVC高级特性和最佳实践:探讨Spring MVC的高级特性,如上传下载、拦截器、异步处理和模板引擎。同时,提供一些在...

Global site tag (gtag.js) - Google Analytics