Spring Security 从配置入门 学习讲解。万恶之源------------web.xml
这段时间,工作闲了下来,接触了Spring Security,对于我一个基础很差的人来说,无疑是个挑战啊。
经过一段时间的摸索,终于有了点眉目,在这里,要特别感谢http://blog.csdn.net/u012367513/article/details/38866465 二当家的 博文对我的帮助。我的代码也是在他的基础上整理而来,只是增加了自己的一些见解。 再次感谢他的帮助。
我的基础很是薄弱,最然 二当家的 博文中已经讲解的很是清楚,但是我还是希望自己能过上一遍。
本文适宜读者: Spring 基础薄弱,和我一样,配置文件大白的人。 希望高手们都留下宝贵的意见。
废话不多说,开码!
我希望看完这篇文章后我们能解决一下问题:
首先,Spring Security 到底是用来干嘛的?
再次,Security 是怎么工作的?
最后,我们为什么要用Security。
--------------------------------------------------------------------------
我先大体上说下security的工作流程:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>SpringSecurityDemo</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- 加载Spring security XML 配置文件
为什么要配置这个文件?!!!
因为百度! security是什么? 就是依靠一个特殊的过滤器(DelegatingFilterProxy,他是干嘛的?!),
依靠他来委托一个在spring上下文的一个bean完成工作。
而这个Bean,说白了就是一个过滤器。
-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/securityConfig.xml
</param-value>
</context-param> <!-- Spring 容器监听,这尼玛又是个什么东东?
listener. 哦 ,是个监听器啊。
看看他的源码
public void contextInitialized(ServletContextEvent event)
{
contextLoader = createContextLoader();
if(contextLoader == null)
contextLoader = this;
contextLoader.initWebApplicationContext(event.getServletContext());
}
瞅见了么,就特么是来加载上面配置的securityConfig.xml文件
-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 看吧,这就是看个特殊的过滤器,撒手掌柜了,他到底干什么了,为什么我们要配置他?
我们来扒开他的皮,瞅一瞅吧,
//这是他的doFilter方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws ServletException, IOException
{
Filter delegateToUse = null;
synchronized(delegateMonitor)
{
if(_flddelegate == null) //如果bean为空
{
WebApplicationContext wac = findWebApplicationContext(); //给我拿来配置文件
if(wac == null) //虾米?配置文件为空?! 妈的,给老子抛异常! 你给老子监听的配置吃啦?!
throw new IllegalStateException("No WebApplicationContext found: no ContextLoaderListener registered?");
_flddelegate = initDelegate(wac); //这是什么?猜都出来了,在配置文件里召唤bean(感情配置文件就是人才市场,掌柜的招小工了..)
}
delegateToUse = _flddelegate; //小工招用完了,就你啦...可怜,三方呢? 工资了? 你他妈的刚毕业吧....
}
invokeDelegate(delegateToUse, request, response, filterChain); //照完小工干嘛去? 干活呗!,给老子干! 干!
}
//这是initDeletegate
protected Filter initDelegate(WebApplicationContext wac)
throws ServletException
{
Filter delegate = (Filter)wac.getBean(getTargetBeanName(), javax/servlet/Filter);
if(isTargetFilterLifecycle())
delegate.init(getFilterConfig());
return delegate;
} //这是invokeDelegate
protected void invokeDelegate(Filter delegate, ServletRequest request, ServletResponse response, FilterChain filterChain)
throws ServletException, IOException
{
delegate.doFilter(request, response, filterChain);
} 咦? 不对呀,小工要造反了怎么办? 你无良老板就啥都不干?
对,我就是啥都不干? 老子就是这么任性。 老子把你们召唤来,就是给了你们生存的价值
(DelegatingFilterProxy做的事情是代理Filter的方法,从application context里获得bean。
这让bean可以获得spring web application context的生命周期支持,使配置较为轻便。)
你们就知足吧! 唉...初来乍到,谁没有被老板坑过....
-->
<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>
</web-app>
Spring Security 从配置入门 学习讲解。万恶之源------------web.xml的更多相关文章
- Spring Security 从配置入门 学习讲解。刽子手------------securityConfig.xml
不知道我的web.xml 大家都理解了没. 废话确实有点多,可能很多知识点,大家都知道,可是我学的时候,压根什么都不懂啊.... 这篇我们要讲刽子手 securityConfig. 为什么要说他是 ...
- Spring Security 入门(1-2)Spring Security - 从 配置例子例子 开始我们的学习历程
1.Spring Security 的配置文件 我们需要为 Spring Security 专门建立一个 Spring 的配置文件,该文件就专门用来作为 Spring Security 的配置. &l ...
- Spring Security极简入门三部曲(上篇)
目录 Spring Security极简入门三部曲(上篇) 写在前面 为什么要用Spring Security 数据库设计 demo时刻 核心代码讲解 小结 Spring Security极简入门三部 ...
- SPRING SECURITY JAVA配置:Web Security
在前一篇,我已经介绍了Spring Security Java配置,也概括的介绍了一下这个项目方方面面.在这篇文章中,我们来看一看一个简单的基于web security配置的例子.之后我们再来作更多的 ...
- Spring Security极简入门三部曲(中篇)
目录 Spring Security极简入门三部曲(中篇) 验证流程 Authentication接口 过滤器链 AuthenticationProvider接口: demo时刻 代码讲解 小结 Sp ...
- Spring Security认证配置(三)
学习本章之前,可以先了解下上篇Spring Security认证配置(二) 本篇想要达到这样几个目的: 1.登录成功处理 2.登录失败处理 3.调用方自定义登录后处理类型 具体配置代码如下: spri ...
- Spring Security认证配置(二)
学习本章之前,可以先了解下上篇Spring Security基本配置. 本篇想要达到这样几个目的: 1.访问调用者服务时,如果是html请求,则跳转到登录页,否则返回401状态码和错误信息 2.调用方 ...
- Spring Security认证配置(一)
学习本章之前,可以先了解下上篇 Spring Security基本配置. 本篇主要讲述Spring Security基于表单,自定义用户认证配置(上篇中的配置,本篇将不再阐述).一共分为三步: 1.处 ...
- spring的Java配置入门(Spring Boot学习笔记之一)
spring的Java配置 1.创建maven项目 使用idea创建maven项目,这里顺便提一下,idea真的比eclipse好用,早点熟悉吧.然后就是maven是java项目管理最主流的工具,自己 ...
随机推荐
- Sql Server R2还有备份数据库错误
错误信息描述 该数据库是运行版本10.50.1600的服务器上备份的.该版本与此服务器(运行版本10.00.1600)不兼容.请在支持该被份的服务器上还原该数据, 或者使用与此服务器兼容的备份(M ...
- 高德地图JavaScript开发
项目需求:标注一个或者两个点.显示信息窗体.自定义icon <!DOCTYPE html> <html lang="en"> <head> &l ...
- ios cordova报gap://ready 弹出框,一直弹
The iOS app was not working because there was a plugin missing: https://github.com/apache/cordova-pl ...
- Java开发常用的在线工具
原文出处: hollischuang(@Hollis_Chuang) 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中 ...
- VA01复制单据,更新定价日期和价格
用户经常复制单据,而复制单据的时候会带过来很多日期的历史数据.定价日期就是其中之一,而价格经常变动,或者删除的话,会出现价格错误等等情况. 1.更新定价日期,保证不会使用历史价格. 2.更新价格,保证 ...
- gulp教程之gulp-livereload
简介: gulp-livereload拯救F5!当监听文件发生变化时,浏览器自动刷新页面.[事实上也不全是完全刷新,例如修改css的时候,不是整个页面刷新,而是将修改的样式植入浏览器,非常方便.]特别 ...
- 关于PHP函数time() date() 和 strtotime() 的时区问题
最近项目中有个需求, 要记录新注册用户的次日登录情况, 于是写出了如下代码: $create_time = '用户注册时间'; //格式 Y-m-d H:i:s $time = time(); $la ...
- uva 10817(状压dp)
题意:就是有个学校要招老师.要让没门课至少有两个老师可以上.每个样样例先输入三个数字课程数量s,已经在任的老师数量,和应聘的老师数量.已经在任的一定要聘请. 思路是参考了刘汝佳书上的,关键如何状压. ...
- [转]http-关于application/x-www-form-urlencoded等字符编码的解释说明
在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型. 下边是说明: application/x-www-form-urlen ...
- redis集群报错
写入redis集群报错:(error) MOVED 6918 解决方法:redis-cli -c -p 7001 -h 10.0.0.104