针对 Spring Security(1) 入门部分
A)那个登录页面哪里来的?
想也想的到 既然自己没有写 那么存在 必然是框架做的.
原因:
当有请求道来的时候,Spring Security框架开始检查要访问的资源是否有权访问,如果当前登录用户无权或者当前根本就没有用户登录,则Spring Securtiy 框架就自动产生一个登录页面。
A)那个登录页面哪里来的?
想也想的到 既然自己没有写 那么存在 必然是框架做的.
原因:
当有请求道来的时候,Spring Security框架开始检查要访问的资源是否有权访问,如果当前登录用户无权或者当前根本就没有用户登录,则Spring Securtiy 框架就自动产生一个登录页面。
如下是spring Security 框架帮我生成的 登陆页面源码:
当在登录页面进行了正确的登录后,Spring Security会自动进行登录验证,如果成功登录,将用户信息放到session中,然后转到先前请求的页面上.我们可以在index中将session中 的key—value打印出来,看看Spring Security 将用户信息如何放到session中的.
<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">密 码:</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>
相关推荐
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring...
SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的...通过学习这些文档,开发者可以更好地理解Spring Security的工作原理,从而更有效地实现应用的安全控制。
spring security方面的学习资料,包含:Spring+Security+3+与+CAS单点登录配置;Spring+Security3中文教程;Spring-Security安全权限管理手册;Spring+Security文库;还有一个学习笔记!
"springsecurity-namespace"可能指的是Spring Security的XML命名空间配置。在Spring Security的早期版本中,使用XML配置是最常见的实践。例如,你可能会看到以下片段: ```xml **" access="hasRole('ROLE_ADMIN')...
Spring Security的学习过程可以分为入门、进阶和高级三个阶段。入门阶段主要是了解Spring Security的基本概念和配置方法。进阶阶段需要深入学习如何定制认证和授权流程、如何集成各种认证方式以及如何在实际项目中...
在3.1版本中,SpringSecurity引入了一些新特性,比如支持OAuth2进行社交登录集成,改进了CSRF(跨站请求伪造)防护,并优化了对RESTful服务的支持。 TestSecurity通常指的是一个示例项目,使用Maven作为项目管理...
Spring Security支持基于表单的身份验证,也支持OAuth2和其他现代认证协议。 免登录功能,即Remember-Me服务,允许用户在一段时间内无须反复登录。这通过RememberMeServices接口实现,通常使用Token-Based策略,将...
2. **Filter Security Interceptor**:Spring Security的核心组件,用于拦截HTTP请求,根据权限控制策略决定是否允许访问。 3. **OAuth2 endpoints**:如`/oauth/authorize`、`/oauth/token`等,用于处理OAuth相关的...
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 ... 基于session认证机制的运作流程。...Spring cloud Security OAuth2包括哪些组件?职责? 分布式系统认证需要解决的问题? 掌握学习方法,掌握思考方式。
SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话...通过深入学习和实践,我们可以更好地掌握SpringSecurity,为我们的应用构建坚固的安全防线。
Spring Security 3是中国社区翻译的官方文档,为国内开发者提供了方便的学习资源。 本套文档包含了Spring Security的基础概念、配置、核心组件以及实际应用场景的详细讲解。以下是一些关键知识点的概述: 1. **...
5. **OAuth2支持**:对于现代Web应用,Spring Security还提供了OAuth2的支持,用于第三方应用的授权。 6. **Web安全**:防止CSRF攻击、XSS防护、Session Fixation等Web安全问题。 结合这两个框架的学习,你可以...
Spring Security 是一个强大的安全框架,用于为Java应用提供全面的安全管理解决方案。它是Spring生态系统的组成部分,...无论你是初学者还是经验丰富的开发者,官方文档都是学习和掌握Spring Security不可或缺的资源。
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是Java平台上的一款强大且高度可定制的安全框架,广泛应用于企业级Web应用的安全管理。本篇文章将围绕"Spring Security 3.1"这一主题,深入探讨其核心...
【Spring Security 学习总结】 Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本学习总结文档主要针对初学者,旨在剖析一个不安全的应用程序并阐述如何通过 ...