`
qq543123909
  • 浏览: 25851 次
社区版块
存档分类
最新评论

Spring Security 学习(4)

阅读更多

对于上篇遗留的问题暂时放一放.

第4篇主要内容:

A).自定义访问被拒绝页面

B).SpringSecurity 标签

 

当我们使用User 登录账户是能成功访问 Index.jsp 使用admin 登录时就被拒绝了,原因是并没有配置admin的访问权限.

在 applicationContext.xml 配置 ,admin就能正常访问 index.jsp .

<security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" /> 

 

接下来完成这些功能:

1) 系统中除了login.jsp可以直接访问以外,其它的页面都需要权限才能进入

2) index.jsp页面 ROLE_USER 和ROLE_ADMIN都可以访问;

3) admin.jsp页面只有ROLE_ADMIN权限可以访问

 

1.创建admin.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>

<body>I am admin Hhhhhhhh!@@....

</body>
</html>

 并且在Index.jsp 中 添加 访问 admin.jsp 的超链接.

<a href="admin.jsp">amdin click。please。。</a>

 

2. applicationContext.xml 配置

- <security:http auto-config="true" >
- <!--  login-page 指定登录页面 
  --> 
  <security:form-login login-page="/login.jsp" /> 
- <!--  对于登录页面不进行拦截 至于后面的* 在访问loing.jsp时可能会传入一些参数 
  --> 
  <security:intercept-url pattern="/login.jsp*" filters="none" /> 
<!--设置admin.jsp访问权限-->
  <security:intercept-url pattern="/admin.jsp*" access="ROLE_ADMIN" /> 
  <security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" /> 
  </security:http>

 

现在用User的用户去登录 点击 连接时访问将被拒绝, 使用 admin 这能正常访问. 被拒绝的页面显示不友好.

 

A)自定义 自定义访问被拒绝页面

 

1.创建 accessDenied.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>无权访问</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>

<body> 
	您的访问被拒绝了.无权访问该资源.
</body>
</html>

 

2.applicationContext.xml 配置

<!--  access-denied-page 指定被拒绝显示的页面  
  --> 
<security:http auto-config="true" access-denied-page="/accessDenied.jsp">
- <!--  login-page 指定登录页面  
  --> 
  <security:form-login login-page="/login.jsp" /> 
- <!--  对于登录页面不进行拦截 至于后面的* 在访问loing.jsp时可能会传入一些参数 
  --> 
  <security:intercept-url pattern="/login.jsp*" filters="none" /> 
  <security:intercept-url pattern="/admin.jsp*" access="ROLE_ADMIN" /> 
  <security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" /> 
  </security:http>

 

现在可以显示自定义拒绝页面了.

 

 B)SpringSecurity 标签 

对于上面用户登录时 该用户没有权限访问的内连 我们可以把它隐藏,有权限的才显示出来.那么用到了 

SpringSecurity 标签了.

 

1.index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!--添加springsecurity标签库的引入的指令-->
<%@ taglib prefix="sec"
	uri="http://www.springframework.org/security/tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>首页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>

<body>
	这是首页 , 欢迎
	<!-- 显示用户登录的用户名-->
	<sec:authentication property="name" />
	!
	<br>
	<!--对当前用户的权限判断是否是ROLE_ADMIN,则显示标签体的内容-->
	<sec:authorize ifAllGranted="ROLE_ADMIN">
		<a href="admin.jsp">amdin click。please。。</a>
	</sec:authorize>
	<br />
	<!--当前用户如果能访问/admin.jsp,则显示标签体的内容-->
	<sec:authorize url="/admin.jsp">
		<a href="admin.jsp">进入admin.jsp页面</a>
	</sec:authorize>
</body>
</html>

 sec:authorize 标签的属性:

A) ifAllGranted:只有当前用户拥有所有指定的权限时,才能显示标签体的内容 (相当于“与” 的关系)

B) ifAnyGranted:当前用户拥有指定的权限中的一个的时候,就能显示标签内部内容(相当于“或”的关系)

C) ifNotGranted:没有指定的权限的时候,显示标签体的内容 (相当于“非”的关系)

分享到:
评论

相关推荐

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    最详细Spring Security学习资料(源码)

    Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。

    spring security学习资料

    spring security方面的学习资料,包含:Spring+Security+3+与+CAS单点登录配置;Spring+Security3中文教程;Spring-Security安全权限管理手册;Spring+Security文库;还有一个学习笔记!

    Spring Security 资料合集

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的...通过学习这些文档,开发者可以更好地理解Spring Security的工作原理,从而更有效地实现应用的安全控制。

    SpringSecurity.pdf

    Spring Security的学习过程可以分为入门、进阶和高级三个阶段。入门阶段主要是了解Spring Security的基本概念和配置方法。进阶阶段需要深入学习如何定制认证和授权流程、如何集成各种认证方式以及如何在实际项目中...

    Spring Security 学习总结1_3

    "springsecurity-namespace"可能指的是Spring Security的XML命名空间配置。在Spring Security的早期版本中,使用XML配置是最常见的实践。例如,你可能会看到以下片段: ```xml **" access="hasRole('ROLE_ADMIN')...

    SpringSecurity学习

    首先,Spring_Security-3.0.1_中文官方文档(翻译版).pdf是学习SpringSecurity的重要资源,它包含详细的框架介绍、配置指南和使用示例。这份文档会帮助我们理解SpringSecurity的基础架构,如安全上下文、过滤器链和...

    spring security 4.0.0所需jar包

    4. **spring-security-acl**: - `spring-security-acl-4.0.0.CI-SNAPSHOT-javadoc.jar`:访问控制列表模块的Java文档,涉及对象级别的权限控制。 在Spring Security 4.0.0中,这些jar包一起工作,提供了一套完整...

    spring security 完整项目实例

    Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中...通过学习和实践这个项目,开发者能够深入理解Spring Security的工作原理,从而更有效地保护自己的Java应用。

    SpringSecurity笔记,编程不良人笔记

    4. **SpringSecurity认证流程** - 用户提交登录请求,请求被SpringSecurity的过滤器拦截。 - 认证过滤器(如`UsernamePasswordAuthenticationFilter`)提取用户名和密码,并调用`UserDetailsService`进行验证。 -...

    Spring Security-3中文官方文档(及教程)

    4. **会话管理**:Spring Security可以实现会话固定保护,防止会话劫持和会话超时策略。同时,它还可以控制并发会话,防止同一用户同时登录多个设备。 5. **CSRF防护**:为了防止跨站请求伪造攻击,Spring Security...

    spring security 官方文档

    4. **会话管理(Session Management)**:Spring Security提供了强大的会话管理功能,可以限制同一用户同时在线的数量,检测会话劫持和会话固定攻击,并能实现会话超时策略。 5. **CSRF保护(Cross-Site Request ...

    Shiro+Spring Security学习文档

    4. **支持Spring MVC和Spring Boot**:Spring Security可以无缝集成到Spring MVC和Spring Boot应用中,提供开箱即用的安全特性。 5. **OAuth2支持**:对于现代Web应用,Spring Security还提供了OAuth2的支持,用于...

    spring security 3.1学习资料 及 附件下载

    4. 弹性安全策略:Spring Security的Filter Chain机制允许开发者自定义过滤器链,实现复杂的安全策略。 四、学习资源与实践 提供的"Spring Security 3.1.pdf"文档是英文版的学习资料,对于深入理解Spring Security...

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

    spring security 学习总结文档

    【Spring Security 学习总结】 Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本学习总结文档主要针对初学者,旨在剖析一个不安全的应用程序并阐述如何通过 ...

    spring_security_3.1

    4. **会话管理**:Spring Security提供了会话管理功能,如会话固定保护、会话超时和并发会话控制。这在防止会话劫持和会话固定攻击方面至关重要。 5. **CSRF(跨站请求伪造)防护**:Spring Security 3.1默认提供了...

Global site tag (gtag.js) - Google Analytics