`
john.zhang
  • 浏览: 16103 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring security 的权限控制一

 
阅读更多

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动态权限控制

    在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...

    Spring Security 权限控制中文API

    这个“Spring Security 权限控制中文API”很可能是对Spring Security框架的中文文档或指南,帮助开发者理解和使用权限控制功能。 Spring Security的核心在于保护资源、进行身份验证(Authentication)和授权...

    SpringSecurity权限控制

    基于springMVC+mybatis+mysql实现。基于SpringSecurity权限控制的简单工程DEMO。maven构建.

    spring security权限控制

    在本文中,我们将深入探讨Spring Security如何实现权限控制,并通过一个名为"springsecuritydemo4"的示例项目来理解其核心概念。 首先,Spring Security 的权限控制主要涉及以下几个关键组件: 1. **认证...

    Spring Security如何使用URL地址进行权限控制

    其中,权限控制是Spring Security的一个重要组件,它允许开发者根据用户角色和权限来控制访问不同的资源。在本文中,我们将探讨如何使用Spring Security来实现URL地址的权限控制。 权限控制是指根据用户的角色和...

    SpringSecurity+OAuth2+JWT分布式权限控制.zip

    本项目“SpringSecurity+OAuth2+JWT分布式权限控制”旨在提供一个完整的解决方案,帮助开发者构建安全的、基于微服务的分布式应用程序。 Spring Security 是一个强大的和高度可定制的身份验证和授权框架,适用于...

    Grails + Spring Security 权限控制

    《Grails + Spring Security 权限控制》 在Web应用开发中,权限控制是不可或缺的一环,它确保了用户只能访问他们被授权的功能和数据。本文将深入探讨如何在Grails框架中集成Spring Security,实现高效且灵活的权限...

    SpringSecurity权限管理

    在"SpringSecurity权限管理开发手册.pdf"和"SpringSecurity权限管理开发手册.pdf.txt"中,你将找到更多关于如何配置和使用SpringSecurity进行权限管理的详细信息,包括配置XML或Java配置、定义访问规则、处理未授权...

    SpringBoot集成Spring Security实现权限控制【完整源码+数据库】

    总的来说,这个项目为学习者提供了一个实际的、完整的SpringBoot集成Spring Security的示例,通过它,你可以了解如何配置和使用Spring Security进行权限控制,同时掌握如何将数据库集成到Spring Boot应用中。...

    spring security3动态权限

    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权限管理"这个主题中,我们将深入探讨如何利用Spring Security来实现复杂而灵活的权限控制。 首先,`MyUser.java`可能是自定义的用户实体类,它通常会包含用户的基本信息,如用户名、密码、角色...

    Spring Security in Action

    Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户身份的验证,以确保用户的...

    Spring Security 权限控制

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。它提供了全面的安全解决方案,包括身份验证、授权、CSRF(跨站请求伪造)防护以及会话管理。Spring Security 与...

    spring3中增加 spring security控制权限

    在Spring框架中,Spring Security是一个强大的安全访问控制组件,它为Web应用提供了全面的安全管理解决方案。本篇文章将深入探讨如何在Spring 3中整合Spring Security来实现权限控制,以保护你的应用程序免受非法...

    SpringSecurity+springMVC+mybatis+mysql实现。基于SpringSecurity权限控制的简单工程DEMO

    基于SpringSecurity+springMVC+mybatis+mysql实现。基于SpringSecurity权限控制的简单工程DEMO。maven构建,用户信息存储在mysq数据库中

    spring security用户权限项目

    在这个项目中,这三者协同工作,Spring Security 负责后台的权限控制,Spring MVC 处理业务逻辑和数据交互,而 jQuery Easy-UI 则提供了用户友好的界面。理解这些知识点对于开发和维护这样一个用户权限管理项目至关...

    spring security权限管理开发手册及实例.rar

    这个“spring security权限管理开发手册及实例.rar”压缩包显然包含了关于如何使用Spring Security进行权限管理的详细指南和实际操作示例。让我们深入探讨一下Spring Security的核心概念、功能以及如何在实践中应用...

    springsecurity角色和权限

    综上所述,Spring Security的角色和权限机制是其核心功能之一,它为企业级应用提供了灵活且强大的安全控制手段。通过合理的配置和实现,开发者可以构建出符合需求的安全系统,确保用户数据和操作的安全性。

    SpringBoot整合权限控制SpringSecurity.docx

    在本文中,我们将探讨如何在SpringBoot项目中整合SpringSecurity实现权限控制,并结合前端Element UI的多标签页(Tabs)组件,提供更加高效的用户体验。SpringBoot是一个流行的Java开发框架,它简化了Spring应用的...

    springboot-springsecurity权限控制的万能后台管理系统

    SpringBoot-SpringSecurity权限控制的后台管理系统是一款基于Maven构建,采用SpringBoot框架与SpringSecurity进行权限管理的高效模板。这个系统旨在提供一个通用、易用的后台解决方案,以满足不同项目的管理需求。 ...

Global site tag (gtag.js) - Google Analytics