msn spaces 对safiari的支持好像不好,每次写日志比较麻烦,所以决定把技术有关的日志移到csdn,就从这篇文章开始.这段时间一直在想权限的设计问题,网络上很多讨论这个问题的文章,看过一些,但仍然觉得没想到最好的办法,期间看到了有关acegi的介绍,他是spring下面的一个子项目,专门解决权限控制的问题,现在已经变为spring security.
权限问题说简单也简单,说难也难.一个简单的权限系统可能只是控制url的权限,就是说用户登录后,你只要读出这个用户对应的角色,以及这个角色对应的可以访问的url,然后在系统的菜单中展现就可以了.没有权限的菜单项不显示.
但是复杂的权限系统也会比较复杂,粒度更细,所设计的权限比简单的增删改查更多,比如工作流的权限,有写时候甚至涉及到委托权限,那么在设计的过程中如何做到权限控制的功能的同时考虑到通用性,用户配置的简单,以及程序的效率还是比较困难的.有空会专门写个权限控制的程序比在日志中做个总结.
这篇文中的主要目的还是我初尝spring security的一些体会,与总结.
用过acegi的人可能都会觉得里面的配置比较麻烦,在spring security中或多或少的得到了一些改进.因为在spring2.0中引入了XML Schema的namespace,而不是原来的DTD,所以在spring security中可以定义自己的一些xml语法,而不是原来的一串bean.但我仍然认为他的配置有点复杂.
1) 首先当然是web.xml的配置:
DelegatingFilterProxy是spring中的一个类,他负责决定filter的实现类,在这里这个实现类是springSecurityFilterChain.所以在这里springSecurityFilterChain的名字不能改变.
2) 接下来就是最重要的<http>节点的配置了:
这里配置了受保护的url,以及可以对其访问的角色,实际上<http>节点有很多的配置项,因为auto-config="true"所以都设为了默认的配置,下面是<http>节点的一些配置:
这里就不详细解释每个配置了.配置完<http>节点后需要配置UserDetailsService,如果你使用auto-config="true"而不配置UserDetailsService的话,系统会报错.
这里定义了用户名以及密码,以及所属的角色.一般应用这些信息都是从数据库读出的.那么你可以自己实现UserDetailsService
或者
这里我们已经有了最简单的权限控制,可以控制某个角色可以访问的url,如果你没有权限则会提示你登录,如果你没有配置<form-login />的话,spring会自己给你提供一个登录框.到这里再比较一下我们自己的应用,有个问题:
用户的信息,属于的角色肯定是应该在数据库或者目录中的,spring security中要怎么做才能和自己系统的数据库表设计结合起来.
这个需要继续研究下.
接下来,我们能够控制url了,那么我们想提供更细粒度的权限控制该怎么办,spring security提供对方法的控制:
意思是只有ROLE_SUPERVISOR角色的用户可以执行storeVisit方法.如果没有权限会给出无权限页面.
问题和上面一样,我要把这个存储在数据库中的话怎么办?
我们可以在也面上就对其做出限制:
这样,有权限的用户才看得到这个按钮
分享到:
相关推荐
Spring Security 实践指南 Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户...
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的安全服务。这个框架能够处理认证、授权以及各种安全相关的功能,帮助开发者构建安全、可扩展的应用。以下...
Spring Security是一个功能强大、高度定制的安全框架,它专门用于为基于Spring的应用程序提供安全性解决方案。Spring Security架构的设计初衷是为了解决认证和授权的需求,确保应用程序的安全性。它提供了全面的安全...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
在压缩包文件`spring_gateway_security_webflux`中,可能包含了示例代码或配置文件,用于演示如何在Spring Cloud Gateway中集成Spring Security,实现统一登录认证鉴权。这些资源可以帮助开发者更快地理解和实践上述...
Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...
SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、授权和访问控制功能。在本文中,我们将深入探讨SpringSecurity的核心概念、关键组件以及如何配置和使用这个框架。 首先,Spring...
SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话管理以及安全相关的功能,可以帮助开发者构建安全的Web应用。在本笔记中,我们将深入探讨Spring...
Spring Security 是一个强大的安全框架,用于为Java应用提供全面的安全管理解决方案。它是Spring生态系统的组成部分,专注于身份验证、授权和访问控制。Spring Security的核心特性包括: 1. **身份验证...
Spring Security是Spring生态体系中的一个核心组件,主要负责应用程序的安全性,包括认证和授权。它为Web应用提供了全面的保护,防止未经授权的访问和操作。在版本2.5时,Spring Security已经是一个成熟且功能丰富的...
SpringBoot+SpringSecurity处理Ajax登录请求问题 SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 ...
### Spring Security 3.0.1 中文版知识点解析 #### 一、Spring Security 3.0.1 概览 ##### 1.1 Spring Security 是什么? Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。它提供了许多功能...
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,广泛用于Java应用程序的安全性管理。这个压缩包包含了Spring Security 4.0.0版本所需的jar包,这是一组核心组件,为构建安全的Web应用提供了...
Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring...
### Spring Security 官方文档中文版重要知识点解析 #### 一、Spring Security 概述 **1.1 Spring Security 是什么?** Spring Security 是一款基于 Spring 框架的安全插件,提供了完整的安全性解决方案,包括...
### Spring Security 概述与应用实践 #### 一、引言 在当今互联网时代,网络安全问题日益凸显,尤其是Web应用程序的安全性受到了前所未有的关注。为了应对这些挑战,Spring Security 应运而生,成为了一个非常重要...
spring security spring security 中文文档
在IT行业中,SpringBoot、SpringSecurity和WebSocket是三个非常重要的技术组件,它们分别在应用程序开发、安全管理和实时通信方面发挥着关键作用。本项目结合这三个技术,构建了一个整合的示例,旨在展示如何在...
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,专为Java应用程序设计。它在Spring生态系统中扮演着核心安全组件的角色,使得开发者能够轻松地实现安全性需求,包括用户认证、授权、会话管理...
Spring Security 是一个强大的安全框架,主要用于Java Web应用的安全管理,包括认证、授权和访问控制等。在Spring Boot中,Spring Security 提供了简洁的API和自动化配置,使得开发者能够快速集成安全功能。在这个名...