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

Spring Security 学习(2)

阅读更多
针对 Spring Security(1) 入门部分

A)那个登录页面哪里来的?
想也想的到 既然自己没有写 那么存在 必然是框架做的.
原因:
当有请求道来的时候,Spring Security框架开始检查要访问的资源是否有权访问,如果当前登
录用户无权或者当前根本就没有用户登录,则Spring Securtiy 框架就自动产生一个登录页面。
如下是spring Security 框架帮我生成的 登陆页面源码:
<html><head><title>Login Page</title></head><body onload='document.f.j_username.focus();'>
<h3>Login with Username and Password</h3><form name='f' action='/spring_security/j_spring_security_check' 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 colspan='2'><input name="submit" type="submit"/></td></tr>
<tr><td colspan='2'><input name="reset" type="reset"/></td></tr>
</table>
</form></body></html>
 

当在登录页面进行了正确的登录后,Spring Security会自动进行登录验证,如果成功登录,
将用户信息放到session中,然后转到先前请求的页面上.我们可以在index中将session中 的key—value打印出来,看看Spring Security 将用户信息如何放到session中的.
用户使用 的key为: SPRING_SECURITY_LAST_USERNAME 对应的是 用户登陆时的用户名.

有明显的 缺陷:
B) 一般登录页面都是我们自己编写的,并且登录页面是不需要验证直接可以访问的

Ok 创建自己的Login.jsp.
1. login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录页面</title>
</head>
<body>
<p style="color:red;" >${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}</p>
<form action="${pageContext.request.contextPath}/j_spring_security_check" method="post">

<label for="userName">用户名:</label> 
<input id="userName" name="j_username" /><br /> 
<label for="password">密&nbsp;&nbsp;码:</label>
<input id="password" type="password" name="j_password" /><br />
<input type="submit" value=" 登录 " />
</form>
</body>
</html>
 
很明显的是 这个login.jsp 里的input 元素 name属下有些熟悉的值.

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" />
		<security:intercept-url pattern="/**" access="ROLE_USER" />
	</security:http>
 
到此就可以测试了 自己的 Login.jsp
testing...
那么你会发现一些不足的地方随之暴入出来....

C) 登陆时的错误信息如何显示 出来.

Spring Security 框架将所有的错误信息都定义成了异常,并且提供了国际化的资源文件。
这个资源文件在 spring-security-core-xxx.jar文件中

 

框架有提供的资源文件 我们可以使用 , 一个好的框架并不体现是他提供了什么 更为重要的他开放的接口 让用户获得更多的控制权 , 

3.创建 massage_zh_CN.properties
AbstractUserDetailsAuthenticationProvider.badCredentials=\u60A8\u65E0\u6743\u8BBF\u95EE\u8BE5\u8D44\u6E90,\u8BF7\u767B\u5F55
//您无权访问该资源,请登录
更多定义 可以参考上框架提供的资源文件.

4 配置 .(applicationContext.xml)
 
	<!-- 这里定义的messageSource对象 是 spring Security框架内部使用消息类。 -->
	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:message_zh_CN" />
	</bean>
 
5. 添加提示(login.jsp)
<p style="color:red;" >${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}</p>
 
再次Testing...
登陆错误将给出提示.!

依然是问题:
D) 密码配置在文件中 未加密..
密码以明文的形式出现在了配置文件中,这是非常危险的。所以我们可以将真实密码经过加密之后的结果放到配置文件中。这需要在配置文件中指明使用什么样的加密算法。
MD5是一种不可逆的加密算法,验证的时候,将用户输入的密码经过MD5加密之后的结果再与配置文件中配置的密文进行比较,如果相同则通过验证。

6.继续配置.(applicationContext.xml)
 
	<!--配置认证管理器 -->
	<security:authentication-manager>
		<security:authentication-provider>
			<security:password-encoder hash="md5"/>
			<security:user-service>
				<security:user name="user" password="ee11cbb19052e40b07aac0ca060c23ee" 
					authorities="ROLE_USER" /><!-- 密码 MD5 加密后的字串 -->
			</security:user-service>
		</security:authentication-provider>
	</security:authentication-manager>
 
 
 
 
 
  • 大小: 43.9 KB
分享到:
评论

相关推荐

    springsecurity学习笔记

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

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

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

    SpringSecurity学习总结源代码

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

    Spring Security 资料合集

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

    spring security学习资料

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

    Spring Security 学习总结1_3

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

    SpringSecurity.pdf

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

    SpringSecurity学习

    在3.1版本中,SpringSecurity引入了一些新特性,比如支持OAuth2进行社交登录集成,改进了CSRF(跨站请求伪造)防护,并优化了对RESTful服务的支持。 TestSecurity通常指的是一个示例项目,使用Maven作为项目管理...

    spring security 完整项目实例

    Spring Security支持基于表单的身份验证,也支持OAuth2和其他现代认证协议。 免登录功能,即Remember-Me服务,允许用户在一段时间内无须反复登录。这通过RememberMeServices接口实现,通常使用Token-Based策略,将...

    Spring security oauth源码

    2. **Filter Security Interceptor**:Spring Security的核心组件,用于拦截HTTP请求,根据权限控制策略决定是否允许访问。 3. **OAuth2 endpoints**:如`/oauth/authorize`、`/oauth/token`等,用于处理OAuth相关的...

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 ... 基于session认证机制的运作流程。...Spring cloud Security OAuth2包括哪些组件?职责? 分布式系统认证需要解决的问题? 掌握学习方法,掌握思考方式。

    SpringSecurity笔记,编程不良人笔记

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话...通过深入学习和实践,我们可以更好地掌握SpringSecurity,为我们的应用构建坚固的安全防线。

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

    Spring Security 3是中国社区翻译的官方文档,为国内开发者提供了方便的学习资源。 本套文档包含了Spring Security的基础概念、配置、核心组件以及实际应用场景的详细讲解。以下是一些关键知识点的概述: 1. **...

    Shiro+Spring Security学习文档

    5. **OAuth2支持**:对于现代Web应用,Spring Security还提供了OAuth2的支持,用于第三方应用的授权。 6. **Web安全**:防止CSRF攻击、XSS防护、Session Fixation等Web安全问题。 结合这两个框架的学习,你可以...

    spring security 官方文档

    Spring Security 是一个强大的安全框架,用于为Java应用提供全面的安全管理解决方案。它是Spring生态系统的组成部分,...无论你是初学者还是经验丰富的开发者,官方文档都是学习和掌握Spring Security不可或缺的资源。

    spring security 4.0.0所需jar包

    2. **spring-security-web**: - `spring-security-web-4.0.0.CI-SNAPSHOT-javadoc.jar`:Web安全相关的Java文档。 - `spring-security-web-4.0.0.CI-SNAPSHOT-sources.jar`:Web安全模块的源代码。 - `spring-...

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

    《Spring Security 3.1 学习指南及资源解析》 Spring Security是Java平台上的一款强大且高度可定制的安全框架,广泛应用于企业级Web应用的安全管理。本篇文章将围绕"Spring Security 3.1"这一主题,深入探讨其核心...

    spring security 学习总结文档

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

Global site tag (gtag.js) - Google Analytics