1. 搭建Spring security 环境.
1) spring 项目: 导入Spring 的两个Jar包, 加入 Spring 的配置文件(注总加入 security 命名空间)
2) 加入 Spring security 的一个 Jar包
3) 在 web.xml 文件中加信相关配置
1> 搭建 spring 环境
web.xml
<!-- 搭建 spring 环境 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2> 加入 Spring security 框架的过滤器
web.xml
<!-- 加入 spring-security 框架的过滤器 -->
<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>
3> 在Spring 的配置文件中配置 Spring security 的应用
applicationContext-security.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">
<!-- 配置 spring-security 的Http服务 -->
<http auto-config="true">
<!-- 哪些页面需要受到 spirng-sceurity 的保护, 以及访问这些页面的权限是什么 -->
<intercept-url pattern="/index.jsp" access="ROLE_ADMIN, ROLE_USER" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<!-- 配置登出 -->
<logout logout-url="/logoff" logout-success-url="/bye.jsp" invalidate-session="false" />
<!-- 配置登录 -->
<form-login login-page="/login.jsp" login-processing-url="/login" default-target-url="/index_1.jsp" always-use-default-target="true" />
</http>
<!-- 配置 spring-security 的权限信息 -->
<authentication-provider>
<!-- 配置security 的用户信息 -->
<user-service>
<user name="user" password="user" authorities="ROLE_USER" />
<user name="admin" password="admin" authorities="ROLE_ADMIN" />
</user-service>
</authentication-provider>
</beans:beans>
2. 用于测试的JSP页面
login.jsp 自定义的 登录界面
<html>
<head>
<title>Login Page</title>
</head>
<body onload='document.f.j_username.focus();'>
<h3>zhangq</h3>
<form name='f' action='login' method='POST'>
<table>
<tr><td>User:</td><td><input type='text' name='j_username' value=''></td></tr>
<tr><td>Password:</td><td><input type='password' name='j_password'/></td></tr>
<tr><td><input type='checkbox' name='_spring_security_remember_me'/></td>
<td>Remember me on this computer.</td></tr>
<tr><td colspan='2'><input name="submit" type="submit"/></td></tr>
<tr><td colspan='2'><input name="reset" type="reset"/></td></tr>
</table>
</form>
</body>
</html>
index-1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
index page. <br>
sessionid= <%=session.getId() %> <br>
<!-- 如果权限不是 ROLE_ADMIN, 则不显示 admin.sjp 链接-->
<security:authorize ifAllGranted="ROLE_ADMIN">
<a href="./admin.jsp"> admin.sjp</a> <br><br>
</security:authorize>
<a href="logoff" >logoff</a>
</body>
</html>
admin.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
index page <br><br>
<a href="./admin.jsp">admin.jsp</a> <br>
SessionId=<%=session.getId() %><br>
<a href="logoff" >logoff</a>
</body>
</html>
bay.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
bye page. <br>
SesionId=<%=session.getId() %><br>
sessionIsNew=<%=session.isNew() %><br>
<a href="login" >Login</a>
</body>
</html>
2. 关于 DelegatingFilterProxy:
1). 是一个 Filter
2). 将 HTTP 请求委托给 Spring 应用程序上下文中的一个 Bean, 默认情况下, DelegatingFilterProxy 会把 HTTP 请求委托给和它的 <filter-name> 属性相同的 Bean 上
3. 配置登出:
1). 通过 http 节点的 logout 子节点进行配置
2). 默认的 url 为: j_spring_security_logout, 可通过 logout-url 属性修改默认的 url
3). logout-success-url 属性配置成功登出重定向页面
4). invalidate-session 属性配置是否销毁 session
4. 配置登录:
1). 通过 http 节点的 form-login 子节点进行配置
2). login-page 属性配置指定的登录页面: 但是该表单页面不能随意的定义, 例如用户名, 密码. 而应使用 spring-security 的配置方式.
3). login-processing-url 属性配置处理登陆页面的 url
4). 若直接访问登录页面, 若登录成功, 则 spring-security 默认把页面重定向到 /index.jsp 页面. 若不存在该页面,或需要重定向到其他页面,
则需要配置 default-target-url 属性; 若访问受保护的页面, 则 spring-security 框架会把请求重定向到 login-page 属性指定的页面, 若登录成功
spring-security 会把请求再重新定向到刚才请求的受保护的那个页面
5). authentication-failure-url 配置登录失败的相应页面
6). 若 always-use-default-target="true" 则只要登录成功, spring-security 都会把请求重定向到 default-target-url 属性指定的页面
分享到:
相关推荐
在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...
这个“Spring Security 权限控制中文API”很可能是对Spring Security框架的中文文档或指南,帮助开发者理解和使用权限控制功能。 Spring Security的核心在于保护资源、进行身份验证(Authentication)和授权...
基于springMVC+mybatis+mysql实现。基于SpringSecurity权限控制的简单工程DEMO。maven构建.
在本文中,我们将深入探讨Spring Security如何实现权限控制,并通过一个名为"springsecuritydemo4"的示例项目来理解其核心概念。 首先,Spring Security 的权限控制主要涉及以下几个关键组件: 1. **认证...
其中,权限控制是Spring Security的一个重要组件,它允许开发者根据用户角色和权限来控制访问不同的资源。在本文中,我们将探讨如何使用Spring Security来实现URL地址的权限控制。 权限控制是指根据用户的角色和...
本项目“SpringSecurity+OAuth2+JWT分布式权限控制”旨在提供一个完整的解决方案,帮助开发者构建安全的、基于微服务的分布式应用程序。 Spring Security 是一个强大的和高度可定制的身份验证和授权框架,适用于...
《Grails + Spring Security 权限控制》 在Web应用开发中,权限控制是不可或缺的一环,它确保了用户只能访问他们被授权的功能和数据。本文将深入探讨如何在Grails框架中集成Spring Security,实现高效且灵活的权限...
在"SpringSecurity权限管理开发手册.pdf"和"SpringSecurity权限管理开发手册.pdf.txt"中,你将找到更多关于如何配置和使用SpringSecurity进行权限管理的详细信息,包括配置XML或Java配置、定义访问规则、处理未授权...
总的来说,这个项目为学习者提供了一个实际的、完整的SpringBoot集成Spring Security的示例,通过它,你可以了解如何配置和使用Spring Security进行权限控制,同时掌握如何将数据库集成到Spring Boot应用中。...
struts2 + spring3 + hibernate3 + spring security3 + mysql + tomcat sys_users;sys_roles;sys_authorities;sys_resources;sys_users_roles;sys_roles_authorities;sys_authorities_resources; PS:此项目运行不...
在"spring security权限管理"这个主题中,我们将深入探讨如何利用Spring Security来实现复杂而灵活的权限控制。 首先,`MyUser.java`可能是自定义的用户实体类,它通常会包含用户的基本信息,如用户名、密码、角色...
Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户身份的验证,以确保用户的...
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。它提供了全面的安全解决方案,包括身份验证、授权、CSRF(跨站请求伪造)防护以及会话管理。Spring Security 与...
在Spring框架中,Spring Security是一个强大的安全访问控制组件,它为Web应用提供了全面的安全管理解决方案。本篇文章将深入探讨如何在Spring 3中整合Spring Security来实现权限控制,以保护你的应用程序免受非法...
基于SpringSecurity+springMVC+mybatis+mysql实现。基于SpringSecurity权限控制的简单工程DEMO。maven构建,用户信息存储在mysq数据库中
在这个项目中,这三者协同工作,Spring Security 负责后台的权限控制,Spring MVC 处理业务逻辑和数据交互,而 jQuery Easy-UI 则提供了用户友好的界面。理解这些知识点对于开发和维护这样一个用户权限管理项目至关...
这个“spring security权限管理开发手册及实例.rar”压缩包显然包含了关于如何使用Spring Security进行权限管理的详细指南和实际操作示例。让我们深入探讨一下Spring Security的核心概念、功能以及如何在实践中应用...
综上所述,Spring Security的角色和权限机制是其核心功能之一,它为企业级应用提供了灵活且强大的安全控制手段。通过合理的配置和实现,开发者可以构建出符合需求的安全系统,确保用户数据和操作的安全性。
在本文中,我们将探讨如何在SpringBoot项目中整合SpringSecurity实现权限控制,并结合前端Element UI的多标签页(Tabs)组件,提供更加高效的用户体验。SpringBoot是一个流行的Java开发框架,它简化了Spring应用的...
SpringBoot-SpringSecurity权限控制的后台管理系统是一款基于Maven构建,采用SpringBoot框架与SpringSecurity进行权限管理的高效模板。这个系统旨在提供一个通用、易用的后台解决方案,以满足不同项目的管理需求。 ...