本文主要是介绍极其抽象的SpringSecurity理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原始:A → B
Security:A → S → B 太抽象了,看不懂啊T_T
抽象故事
故事大概:C是一个大区,拥有巨大的火力(C准备联合B吞并掉A),A得到了这个消息,派出间谍伪装成B区人,对C进行爆破,C开始怀疑B是假合作,但又不能明目张胆去破坏联盟又不能完全相信B,于是在BC大桥的C区进口建立海口进行对B区来的人进行防范
在理想状态下,我们是属于互不侵犯原则,但是呢,理想不是现实,总有人会因为某种原因进行攻击我们,在这种情况下,我们需要建立自己的海关进行防范,SpringSecurity就是一个目前具有实战经验的一种门
检查内容
第一层验证:我们要验证什么,进行对什么的验证,是只要进来的都要通过验证,还是部分需要验证
authorizeHttpRequests()
第二次验证:居民信息认证(用户登录认证)userDetailsService()
第三层验证:进入验证,fromLougin
第四层验证:离开验证,logout
第五层验证:是否为跳转人员,csrf
第六层构建:build
@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception{return http.authorizeHttpRequests(authorizeChen ->{authorizeChen.anyRequest().authenticated();}).formLogin(Login ->{Login.loginProcessingUrl("/api/auth/login");Login.successHandler(new AuthenticationSuccessHandler() {
// 成功登录响应的内容@Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {response.setCharacterEncoding("gbk");response.getWriter().write(JSONObject.toJSONString(jsonEntity.json("登录成功")));}});
// 登录失败响应内容Login.failureHandler(new AuthenticationFailureHandler() {@Overridepublic void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {response.setCharacterEncoding("gbk");response.getWriter().write(JSONObject.toJSONString(jsonEntity.failureJson(302,exception.getMessage())));}});}).logout(Logout ->{Logout.logoutUrl("/api/auth/logout");}).userDetailsService(userservice).csrf(AbstractHttpConfigurer::disable).build();}
这篇关于极其抽象的SpringSecurity理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!