当前位置: 首页 > news >正文

女和男做搞基视频网站搜索引擎优化的重要性

女和男做搞基视频网站,搜索引擎优化的重要性,网站是怎么做,html遇到的问题及解决方法Spring Security spring提供的安全框架。主要提供了认证和授权的功能。简单梳理看看。   原理简单说就是Spring Security在基于Servlet应用中,其底层采用了Filter机制实现了对请求的认证,授权和漏洞防御等功能。 DelegatingFilterProxy 我们知道,Filter是Servlet规范里面…

Spring Security

  spring提供的安全框架。主要提供了认证和授权的功能。简单梳理看看。
  原理简单说就是Spring Security在基于Servlet应用中,其底层采用了Filter机制实现了对请求的认证,授权和漏洞防御等功能。

DelegatingFilterProxy

  我们知道,Filter是Servlet规范里面的东西。基于Servlet规范,我们可以为ServletR勇气注入一些自定义Filters。
  但是在Spring应用中,实现了Filter接口的Bean无法被Servlet容器感知到。因此,Spring提供了一个DelegatingFilterProxy代理类,DelegatingFilterProxy实现了Filter,因此它可以被注入到FilterChain中,同时,当请求到来时,它会把请求转发到Spring容器中实现了Filter接口的Bean实体。也就是说,DelegatingFilterProxy桥接了Servlet容器和Spring容器。
  默认情况下,DelegatingFilterProxy从Spring容器中获取得到的就是FilterChainProxy实体,而FilterChainProxy也是一个代理类,它最终会将请求转发到SpringSecurity提供的SecurityFilterChain中。
  FilterChainProxy就是Spring Security真正的入口起始点。调试代码的时候,可以将断点设置在FilterChainProxy#doFilter就可以追踪SpringSecurity完整调用流程。

FilterChainProxy

public class FilterChainProxy extends GenericFilterBean {
//FILTER_APPLIED 变量是一个标记,用来标记过滤器是否已经执行过了private static final String FILTER_APPLIED = FilterChainProxy.class.getName().concat(".APPLIED");
//filterChains 是过滤器链,注意,这个是过滤器链,而不是一个个的过滤器private List<SecurityFilterChain> filterChains;
//filterChainValidator 是 FilterChainProxy 配置完成后的校验方法,默认使用的 NullFilterChainValidator 实际上对应了一个空方法,也就是不做任何校验private FilterChainValidator filterChainValidator = new NullFilterChainValidator();//FilterChain为servlet的过滤器链@Override
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {//为true,表示尚未执行过;false表示,已经标记boolean clearContext = request.getAttribute(FILTER_APPLIED) == null;if (clearContext) {try {request.setAttribute(FILTER_APPLIED, Boolean.TRUE);//执行spring security的过滤器doFilterInternal(request, response, chain);}finally {//清除SecurityContextHolder 中保存的用户信息,同时移除 request 中的标记SecurityContextHolder.clearContext();request.removeAttribute(FILTER_APPLIED);}}else {doFilterInternal(request, response, chain);}
}

  在 doFilter 方法中,正常来说,clearContext 参数每次都是 true,于是每次都先给 request 标记上 FILTER_APPLIED 属性,然后执行 doFilterInternal 方法去走过滤器,执行完毕后,最后在 finally 代码块中清除 SecurityContextHolder 中保存的用户信息,同时移除 request 中的标记。

private void doFilterInternal(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {FirewalledRequest fwRequest = firewall.getFirewalledRequest((HttpServletRequest) request);HttpServletResponse fwResponse = firewall.getFirewalledResponse((HttpServletResponse) response);//根据当前request,从FilterChainProxy中配置的多个过滤器链(可以只有一个),找到和当前相匹配的一个securityFilterChain,并获取filtersList<Filter> filters = getFilters(fwRequest);if (filters == null || filters.size() == 0) {if (logger.isDebugEnabled()) {logger.debug(UrlUtils.buildRequestUrl(fwRequest)+ (filters == null ? " has no matching filters": " has an empty filter list"));}fwRequest.reset();//如果filters为null,表示当前请求不需要执行security的过滤器链,直接执行servlet上的过滤器链chain.doFilter(fwRequest, fwResponse);return;}//如果需要执行security的过滤器链,首先构造一个虚拟的过滤器链VirtualFilterChain vfc = new VirtualFilterChain(fwRequest, chain, filters);vfc.doFilter(fwRequest, fwResponse);
}//request匹配到的过滤器链上的所有filters
private List<Filter> getFilters(HttpServletRequest request) {for (SecurityFilterChain chain : filterChains) {if (chain.matches(request)) {return chain.getFilters();}}return null;
}

  doFilterInternal 方法就比较重要了:

  1. 首先将请求封装为一个 FirewalledRequest 对象,在这个封装的过程中,也会判断请求是否合法。
  2. 对响应进行封装。
  3. 调用 getFilters 方法找到过滤器链。该方法就是根据当前的请求,从 filterChains 中找到对应的过滤器链,然后由该过滤器链去处理请求。
  4. 如果找出来的 filters 为 null,或者集合中没有元素,那就是说明当前请求不需要经过过滤器。直接执行 chain.doFilter ,这个就又回到原生过滤器中去了。那么什么时候会发生这种情况呢?那就是针对项目中的静态资源,如果我们配置了资源放行,如 web.ignoring().antMatchers(“/hello”);,那么当你请求 /hello 接口时就会走到这里来,也就是说这个不经过 Spring Security Filter。
  5. 如果查
http://www.hotlads.com/news/5247.html

相关文章:

  • 网站建设运行状况上海百网优seo优化公司
  • 南宁门户网站有哪些seo优化方法
  • 江宁区建设工程局网站专门做排行榜的软件
  • 站长网网站模板杭州优化商务服务公司
  • 公司怎么搭建自己网站写手接单平台
  • 个人做的网站能备案吗日本今日新闻头条
  • 电子商务网站的建设和维护论文汕头网站排名
  • 网站建设服务合同书google google
  • 做优化的网站必须独立IP吗东营seo
  • 网站特效怎么做自适应电商运营培训大概多少学费
  • 山西省住房建设厅网站首页搜索引擎营销的主要方式有
  • 网站群管理全网营销是什么
  • 网站建设外包协议中国进入全国紧急状态
  • 网站域名被劫持百度seo关键词优化排行
  • 设计欣赏网站深圳seo优化培训
  • 网页设计与网站建设docx快速优化官网
  • 做网站对电脑要求高吗上海做推广的引流公司
  • 机械加工网站色彩搭配自己有域名怎么建网站
  • 做网站运营的要求排行榜123网
  • 开封市建设中专继续教育网站企业软文代写
  • wordpress 调查问卷爱站网站seo查询工具
  • js做各类图表网站查询网域名查询
  • 药品行业做网站创建网站的基本流程
  • 学校如何建网站西点培训学校
  • 建设厅网站账户名忘了怎么查seo的推广技巧
  • 最轻快的wordpress主題郑州seo使用教程
  • 合肥专业做淘宝网站网络做推广广告公司
  • 淮南网站建设好北京seo公司公司
  • 淘宝的网站怎么做的好深圳网络推广招聘
  • 免费化妆品网站模板下载百度指数官方版