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

网站打包成app软件容桂网站建设公司

网站打包成app软件,容桂网站建设公司,代理网页游戏多少钱,正邦集团招聘目录 1.简单的使用示例 2.大致的流程 EnableWebSecurity WebSecurityConfiguration AutowiredWebSecurityConfigurersIgnoreParents 小结 1.简单的使用示例 首先,新建一个config包用于存放spring-security通用配置;然后,新建一个WebSecu…

目录

1.简单的使用示例

2.大致的流程

EnableWebSecurity

WebSecurityConfiguration

AutowiredWebSecurityConfigurersIgnoreParents

小结


1.简单的使用示例

        首先,新建一个config包用于存放spring-security通用配置;然后,新建一个WebSecurityConfig类,使其继承WebSecurityConfigurerAdapter。

        然后,给WebSecutiryConfig类中加上@EnableWebSecurity 注解后,这样便会自动被 Spring发现并注册。

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeHttpRequests().anyRequest().authenticated().and().formLogin(form -> form.loginPage("/myLogin.html").permitAll()).logout(logout -> logout.permitAll()).csrf().disable();return http.build();}

        现在重启服务,应用新的安全配置。在下次访问localhost:8080时,系统会要求我们进行表单认证。我们访问的地址会自动跳转到localhost:8080/myLogin.html,只要输入正确的用户名和密码便可跳转回原访问地址。

2.大致的流程

        一般在使用 Spring Security 框架时,我们会自定义一个配置类,配置类加上 @EnableWebSecurity 注解,重新启动程序,一个使用了安全框架的项目就起来了。

        点击自定义配置类上添加的 @EnableWebSecurity,如下所示:

EnableWebSecurity

@Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@Target(value = { java.lang.annotation.ElementType.TYPE })
@Documented
@Import({ WebSecurityConfiguration.class, SpringWebMvcImportSelector.class })
@EnableGlobalAuthentication
@Configuration
public @interface EnableWebSecurity {
   /**
    * Controls debugging support for Spring Security. Default is false.
    * @return if true, enables debug support with Spring Security
    */
   boolean debug() default false;
}

        重点关注 @Import 导入的类 WebSecurityConfiguration 。

        点击@Import 导入的类 WebSecurityConfiguration,如下所示:

WebSecurityConfiguration

    在这里,发现类中定义了很多Bean,其中就有跟安全管理相关的核心过滤器springSecurityFilterChain。

@Configuration
public class WebSecurityConfiguration implements ImportAware, BeanClassLoaderAware {

... ...

@Bean(name = AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME)
public Filter springSecurityFilterChain() throws Exception {
   boolean hasConfigurers = webSecurityConfigurers != null
         && !webSecurityConfigurers.isEmpty();
   if (!hasConfigurers) {
      WebSecurityConfigurerAdapter adapter = objectObjectPostProcessor
            .postProcess(new WebSecurityConfigurerAdapter() {
            });
      webSecurity.apply(adapter);
   }
   return webSecurity.build();
}

        这个方法返回的是Filter,说明这个Bean是一个过滤器。

        webSecurity.build():这行代码说明这个Filter是通过webSecurity创建的,而且webSecurity是通过建造者模式来构建Filter对象的。后续再深入了解webSecurity建造者的构建过程。

        webSecurity.apply(adapter):这行代码是构建者webSecurity使用一个配置器。hasConfigurers为空时,new一个WebSecurityConfigurerAdapter对象,不为空时,查看如下的setFilterChainProxySecurityConfigurer方法。

@Autowired(required = false)
public void setFilterChainProxySecurityConfigurer(ObjectPostProcessor<Object> objectPostProcessor,   @Value("#{@autowiredWebSecurityConfigurersIgnoreParents.getWebSecurityConfigurers()}") List<SecurityConfigurer<Filter, WebSecurity>> webSecurityConfigurers)throws Exception {webSecurity = objectPostProcessor.postProcess(new WebSecurity(objectPostProcessor));if (debugEnabled != null) {webSecurity.debug(debugEnabled);}Collections.sort(webSecurityConfigurers, AnnotationAwareOrderComparator.INSTANCE);Integer previousOrder = null;Object previousConfig = null;for (SecurityConfigurer<Filter, WebSecurity> config : webSecurityConfigurers) {Integer order = AnnotationAwareOrderComparator.lookupOrder(config);if (previousOrder != null && previousOrder.equals(order)) {... ...}previousOrder = order;previousConfig = config;}for (SecurityConfigurer<Filter, WebSecurity> webSecurityConfigurer : webSecurityConfigurers)   {webSecurity.apply(webSecurityConfigurer);}this.webSecurityConfigurers = webSecurityConfigurers;
}

       在这里,通过autowiredWebSecurityConfigurersIgnoreParents.getWebSecurityConfigurers()获取配置器,然后建造者webSecurity再使用这些配置器。

     点击autowiredWebSecurityConfigurersIgnoreParents.getWebSecurityConfigurers(),如下所示:

AutowiredWebSecurityConfigurersIgnoreParents

final class AutowiredWebSecurityConfigurersIgnoreParents {

... ...

public List<SecurityConfigurer<Filter, WebSecurity>> getWebSecurityConfigurers() {
   List<SecurityConfigurer<Filter, WebSecurity>> webSecurityConfigurers = new ArrayList<SecurityConfigurer<Filter, WebSecurity>>();
   Map<String, WebSecurityConfigurer> beansOfType = beanFactory
         .getBeansOfType(WebSecurityConfigurer.class);
   for (Entry<String, WebSecurityConfigurer> entry : beansOfType.entrySet()) {
      webSecurityConfigurers.add(entry.getValue());
   }
   return webSecurityConfigurers;
}

       在这里,通过beanFactory获取WebSecurityConfigurer实例,这些实例正是我们使用spring-security所自定义的配置类WebSecurityConfig。

小结

        整个流程主要由建造者和配置器构成,在服务启动时就是通过配置器对建造者所要构建的对象进行配置,配置完成再由建造者构建出核心过滤器springSecurityFilterChain。


文章转载自:

http://htbdVpin.dtjwm.cn
http://eJXej7T9.dtjwm.cn
http://lkzT3161.dtjwm.cn
http://tPWj7SVk.dtjwm.cn
http://pELbQJ8m.dtjwm.cn
http://pOlgwLcT.dtjwm.cn
http://K7CNuG3j.dtjwm.cn
http://u3cCnT0d.dtjwm.cn
http://46Xaiejj.dtjwm.cn
http://BEruWif0.dtjwm.cn
http://u8iPZwQP.dtjwm.cn
http://vw9LyOBV.dtjwm.cn
http://rdS1b1AO.dtjwm.cn
http://57FG2I6g.dtjwm.cn
http://MQ4ldwL3.dtjwm.cn
http://v9E5mkji.dtjwm.cn
http://GxRj8K0I.dtjwm.cn
http://qQHeMZAm.dtjwm.cn
http://9zQAQ6ik.dtjwm.cn
http://EfiwAQUq.dtjwm.cn
http://WqH5SrIu.dtjwm.cn
http://iGmWYCms.dtjwm.cn
http://pUDjU1oX.dtjwm.cn
http://SoEAg3aT.dtjwm.cn
http://BUl5gx4r.dtjwm.cn
http://J9SY0eew.dtjwm.cn
http://FQckderf.dtjwm.cn
http://mAjeOS6h.dtjwm.cn
http://VKfrqL7p.dtjwm.cn
http://ajSZWZlx.dtjwm.cn
http://www.dtcms.com/wzjs/612478.html

相关文章:

  • 公司开发网站做首饰网站
  • 中国电商网站排名仿制网站建设
  • 快速建站系统网页美工设计师培训
  • 西双版纳网站建设开发公司网站建设与管理专业就业前景
  • 宠物网站开发织梦网站推广插件
  • wordpress建网站视频网站开发好就业吗
  • 金华市建设局网站贾润根推荐
  • 信息公司网站建设方案 游戏wordpress分类目录进不去
  • h网站建设如何搭建一个自己的服务器
  • 泉州网站建设外包WordPress图片及插件
  • 加强公司内部网站建设手机开发网站开发
  • 网站建设的有什么需求网站设计评价标准
  • 西安手机商城网站设计外贸营销平台
  • 网站开发程序说明网页界面设计的功能性主要体现在信息的哪两个方面
  • 嘉兴外贸网站建设广东购物网站建设报价
  • 移动端网站推广开发公司年度工作计划
  • 微网站的建设模板有哪些wordpress密码登录插件
  • 民政 门户网站 建设江西中恒建设集团有限公司网站
  • 怎么做一个个人网站wordpress经常io和cpu很高
  • 定制网站制作公司怎么样让iis做跳转网站
  • 汕头网站建设套餐电子商务网站建设与管理第二版
  • 金融公司网站设计图南昌 网站 公司
  • 网站建设最好android studio教程
  • 厦门做网站企业网站自身seo优化怎么做
  • 做lol直播网站推广型网站建设地址
  • 做网站和做系统有什么区别做app需要什么技术
  • 网页设计与网站建设基础心得体会游戏网站怎么建设
  • 购物网站的推广seo排名赚钱
  • 中山移动网站建设多少钱冠县网站建设
  • 抚州的电子商务网站建设公司网站的稳定性