最近学习了SSH,越发觉得权限管理的重要性,上网看了一下权限管理框架,大致有Apache Shiro和Spring Security比较出名,因为刚学习了Spring,所以就选择Spring Security吧,上官网把jar包下载下来,运行了一下spring-security-samples-tutorial示例程序,感觉配置好难呀。上网搜索了一下Spring Security相关的文章,折腾了一下,没有跑通一个程序,感觉入门还是比较困难的,一上来就是相关概念头都大了。没办法,对照参考文档一步一步摸索吧。
先做一个最简单的应用,二个页面:index.html和admin.html,分别代表具有ROLE_USER和ROLE_ADMIN权限的人可以访问的页面,当然具有ROLE_ADMIN权限的用户两个页面都可以访问了。
首先新建web应用程序,导入tutorial实例程序下WEB-INF/lib下所有的jar文件,并将logbak.xml文件拷贝到src文件夹下。
1.修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
原理很简单:listener用来加载配置文件,filter用来过滤所有访问请求。
2.新建applicationContext-security.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<debug />
<http auto-config="true">
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN"/>
<intercept-url pattern="/**" access="ROLE_USER"/>
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="user" password="user" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
监听http请求,intercept-url中的权限要按照由细到粗的顺序排列,Spring Security从上到下匹配规则,符合条件即完成授权,若果上面两个intercept调换位置,任意请求都满足/**,则用户只要具有ROLE_USER权限则可以访问所有资源,包括/admin.jsp了。
<authentication-manager>中定义了两个用户,权限之间用逗号隔开。
3.新建index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎页面</title>
</head>
<body>
<h2>这是首页</h2>
<a href="admin.jsp">进入admin页面</a>
</body>
</html>
4.新建admin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<h2>管理员页面</h2>
</body>
</html>
好了,大功告成,运行代码看一下吧。Spring Security自动为我们添加了登录页面,还是挺简单的。就到这里吧,虽然好多标签不知道什么意思,权限管理的相关概念也不清楚,慢慢摸索吧。高手路过请轻拍,谢谢啦。
分享到:
相关推荐
### Spring Security 3.0.1 中文自学教程知识点概览 #### 一、Spring Security 简介 ##### 1.1 Spring Security 是什么? Spring Security 是一款强大的、高度可定制的身份验证与授权框架。它能够帮助开发者保护...
版本历史是学习框架的重要一环,Spring Security自2003年推出以来,经过多个版本的迭代和改进,功能不断完善。例如,Spring Security 4.1版本在安全性配置上有了显著的提升,尤其是在Web应用程序安全性和授权方面...
本项目"spring-sample"旨在为初学者提供一个全面、深入理解Spring框架的自学平台。通过此项目,我们可以一步步地学习和实践Spring的核心特性,包括依赖注入(DI)、面向切面编程(AOP)、数据访问以及Web应用等关键...
《JavaWeb整合开发完全自学手册》主要介绍Struts、Hibernate、Spring、Eclipse的基础知识,如何整合这4个开源框架进行J2EE开发,如何基于MyEclipseIDE进行开发,J2EE开发的基础和基础环境搭配,Struts、Hibernate、...
【Spring5自学讲义】 Spring框架是Java领域中极为重要的轻量级开源框架,它以其卓越的依赖注入(DI)和面向切面编程(AOP)能力,以及强大的企业级服务支持,成为现代Java应用开发的基石。Spring5是其最新的版本,...
Spring 3.0 MVC 是一个强大的Java框架,用于构建企业级Web应用程序。它以其模块化、松耦合和高度可配置性而闻名。本自学教程集合了多种资源,旨在帮助初学者逐步掌握Spring 3.0 MVC的核心概念,并通过实际项目实例...
Spring Cloud系列教程 Spring Boot Spring Cloud Stream 和 Kafka案例教程 springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud ...
1. **第一章:Spring概述** - Spring框架简介:了解Spring的起源、发展历程及在Java企业级应用中的地位。 - IoC(控制反转)与DI(依赖注入):讲解这两个核心概念,如何通过它们简化程序设计和管理对象间的依赖...
自学Spring所产生的代码,包含IOC、AOP的入门以及进阶,Spring与数据库(MySQL)的交互。(该资源不仅包含我写的代码,一切Spring、aspect、jdbc等所需jar包都俱全,项目导入就能跑起来)
【Spring MVC 自学教程】 Spring MVC 是一个基于 Model-View-Controller(MVC)设计模式的轻量级 Web 开发框架。它使开发者能够轻松地将业务逻辑、数据处理和用户界面分离,从而提高代码的可维护性和复用性。 **...
1. **Spring框架概述**:Spring是一个开源的Java平台,它为开发企业级应用提供了全面的解决方案。它主要由IoC(Inversion of Control,控制反转)容器、AOP(Aspect Oriented Programming,面向切面编程)、数据访问...
文档可能包括了创建第一个SpringBoot应用的步骤,这通常涉及创建一个主应用类,使用@SpringBootApplication注解来标识。这个注解会启动Spring的自动配置功能,它会根据你的类路径和依赖来配置应用。你还可以定义一个...
博客项目自学教程主要涵盖了SpringBoot、Thymeleaf、PageHelper和SpringSecurity四个核心技术和框架。下面将分别详细解释这些技术及其在项目中的应用。 **SpringBoot** SpringBoot是由Pivotal团队提供的全新框架,...
1. **Mybatis核心Jar**:这个版本包含Mybatis框架的核心库,如mybatis.jar,其中包含了SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession等关键类,它们是Mybatis运行的基础。 2. **配置文件**:Mybatis的...
安全性是构建现代企业级应用的重要考量,Spring Security为基于Spring的应用提供了一个全面的安全解决方案。学习指南中包含的内容包括如何利用Spring Security来保护应用程序,以及如何配置认证和授权等。 RESTful ...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建MVC模式的应用提供了强大的支持。本自学文档主要介绍了Spring MVC的基本概念和核心组件,适合初学者掌握其基本工作原理。 1. DispatcherServlet(前端控制...
总的来说,"Spring学习之路"资料包将带你走过Spring框架的基本知识,从Spring的核心原理到实战Spring MVC项目,是一条完整的自学路径。希望你在学习过程中不断积累,提升自己的Java Web开发能力。
Spring框架是中国乃至全球开发者广泛使用的Java企业级应用开发框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and ...这个"小马spring视频源码"资源对于初学者和进阶者都是一个宝贵的自学材料。
1. **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,通过DI,对象之间的依赖关系不再由对象自身管理,而是由外部容器(如Spring IoC容器)来控制。这种方式提高了代码的可测试性和可维护性。 2. ...
依赖注入是 Spring 的核心特性之一,它允许开发者将对象之间的依赖关系解耦。在传统的Java应用程序中,一个类通常会创建它所依赖的对象,而在Spring中,这些依赖关系可以通过构造函数、setter方法或接口回调等方式...