极其抽象的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

java 复制代码
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
        return http
                .authorizeHttpRequests(authorizeChen ->{
                    authorizeChen.anyRequest().authenticated();
                })
                .formLogin(Login ->{
                    Login.loginProcessingUrl("/api/auth/login");
                    Login.successHandler(new AuthenticationSuccessHandler() {
//                        成功登录响应的内容
                        @Override
                        public 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() {
                        @Override
                        public 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();
    }
相关推荐
网安_秋刀鱼6 分钟前
【java安全】shiro鉴权绕过
java·开发语言·安全
与遨游于天地7 分钟前
Spring 的10个核心能力,对框架开发的启示
java·后端·spring
独自归家的兔15 分钟前
通义千问3-VL-Plus - 界面交互(本地图片改进)
java·人工智能·交互
浔川python社21 分钟前
《C++ 小程序编写系列》(第四部):实战:简易图书管理系统(类与对象篇)
java·开发语言·apache
楠枬38 分钟前
OpenFeign
java·spring cloud·微服务
是席木木啊41 分钟前
基于MinIO Java SDK实现ZIP文件上传的方案与实践
java·开发语言
计算机毕设指导61 小时前
基于微信小程序的垃圾分类信息系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 高校就业系统的实现为例,包含答辩的问题和答案
java·eclipse
一起养小猫1 小时前
《Java数据结构与算法》第四篇(四):二叉树的高级操作查找与删除实现详解
java·开发语言·数据结构·算法
Coder_Boy_1 小时前
【人工智能应用技术】-基础实战-小程序应用(基于springAI+百度语音技术)智能语音控制-单片机交互代码
java·人工智能·后端·嵌入式硬件