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

Day48_SpringSecurity

文章目录

        • 什么是SpringSecurity
        • 什么是 Spring Security认证和授权?
        • 如何自定义Spring Security的配置?
        • 如何实现自定义的用户认证(Authentication)流程?
        • 面试题3. 基本身份验证是什么意思?
        • 面试题5. Spring Security中的会话管理是什么意思?
        • 面试题10. Spring Security中的哈希是什么意思?
        • 面试题11. 解释加盐及其用法。
        • 面试题12. 什么是密码编码器?
        • 面试题15. 什么是 SpEL(Spring 表达式语言)?
        • 面试题16. 支持SpEL 的Security注释有哪些。
        • 什么是Spring Security的方法级安全性?
        • 面试题17. 解释什么是 Spring Security中的身份验证管理器。
        • 面试题19. 什么是JWT?
        • 面试题20. 什么是Spring Security过滤器链?
        • 面试题21. 解释Security过滤器链的工作原理。
        • 面试题22. Spring Security的预定义过滤器。
        • 面试题6. 安全上下文和安全上下文持有者。
        • 面试题23. Spring Security中的委托人是什么意思?
        • 面试题27. 顺序在拦截 URL模式中重要吗?如果是,那么我们应该按什么顺序写?
        • SpringSecurity的核心组件有哪些
        • 问题5:如何配置Spring Security以保护Web应用程序的URL?
        • Spring Security如何处理跨站请求伪造(CSRF)攻击?
        • 如何禁用或启用CSRF保护?
        • Spring Security支持哪些身份验证方式?
        • 如何实现记住我功能(Remember Me)?

什么是SpringSecurity

SpringSecurity能干什么?
Spring Security本质上只是一堆 servlet 过滤器,Spring Security 能够完成用户认证和授权,还能防御一些常见的攻击
(1)用户认证指的是:验证某个用户能否访问该系统。这就像回答问题你是谁?
(2)用户授权指的是:验证某个用户是否有权限执行某个操作。比如某个接口是否运行调用,某个修改操作是否允许。它可以被认为是对用户可以做/读这个的问题的回答?
(3)防御常见攻击:CSRF、HTTP Headers、HTTP Requests

SpringSecurity怎么使用?

①我们需要自己写个类实现UserDetailsService并重写其loadUserByUsername方法,编写查询数据库过程,返回User对象,这个User对象时SpringSecurity框架提供的。这个查数据库的过程肯定得你来写,写完后把查到的数据给到SpringSecurity。
说白了,一个用户为zhangsan登录系统,我们得在UserDetailsService里面查询数据库拿到User对象,然后返回给SpringSecurity,这样SpringSecurity就知道该用户能否登录系统。

②我们需要一个配置类,这个配置类里面配置"登录成功后去哪个页面"、“登录失败去哪个页面”、“哪些路径需要做认证”

@Override
protected void configure(HttpSecurity http) throws Exception {
   
    http.logout()
       .logoutUrl("/logout") //登出的地址:表示调用/logout就会登出系统
       .logoutSuccessUrl("/test/hello") //表示登出后跳转到的路径
       .permitAll(); // 表示"/test/hello"这个地址不进行权限校验
	http.formLogin()    //自定义自己编写的登录页面
	  .loginPage("login.html")    //设置登录页面是login.html
	  .loginProcessingUrl("/user/login")  //用户在登陆页面输入登录信息后访问的路径是"/user/login",然后SpringSecurity就会帮你跳转到login.html
	  .defaultSuccessUrl("test/index").permitAll()    //登录成功后跳转到的路径,这个地址permitAll()也就是不进行权限校验
	  .and()
	  .authorizeRequests().antMatchers("/","/test/hello","/user/login") //设置路径
	  .permitAll() //表示上面的路径不需要认证
	  .anyRequest() //表示其它请求路径
	  .authenticated() //都需要进行身份验证。
	  .antMatchers("/test/index").hasAuthority("admins") //表示"/test/index"路径需要有"admins"的权限才能访问
	  .antMatchers("/test/find").hasRole("admins") //表示"/test/find"路径需要有"admins"的这个角色才能访问
	  .and().csrf().disable();    //关闭csrf保护
}
什么是 Spring Security认证和授权?

(1)用户认证指的是:验证某个用户能否访问该系统。这就像回答问题你是谁?
(2)用户授权指的是:验证某个用户是否有权限执行某个操作。比如某个接口是否运行调用,某个修改操作是否允许。它可以被认为是对用户可以做/读这个的问题的回答?

如何自定义Spring Security的配置?

答案: 可以在SecurityConfigurerAdapter类中覆盖configure()方法自定义的安全配置规则。还可以通过实现UserDetailsService接口来提供自定义的用户详细信息服务。

@Override
protected void configure(HttpSecurity http) throws Exception {
   
    http.logout()
       .logoutUrl("/logout") //登出的地址:表示调用/logout就会登出系统
       .logoutSuccessUrl("/test/hello") //表示登出后跳转到的路径
       .permitAll(); // 表示"/test/hello"这个地址不进行权限校验
	http.formLogin()    //自定义自己编写的登录页面
	  .loginPage("login.html")    //设置登录页面是login.html
	  .loginProcessingUrl("/user/login")  //用户在登陆页面输入登录信息后访问的路径是"/user/login",然后SpringSecurity就会帮你跳转到login.html
	  .defaultSuccessUrl("test/index").permitAll()    //登录成功后跳转到的路径,这个地址permitAll()也就是不进行权限校验
	  .and()
	  .authorizeRequests().antMatchers

http://www.kler.cn/news/327441.html

相关文章:

  • 上海市计算机学会竞赛平台2024年9月月赛丙组材料组合
  • sql 时间交集
  • C# 变量与常量
  • Unity3D Shader的阴影部分法线效果详解
  • Android Studio | 无法识别Icons.Default.Spa中的Spa
  • 软件设计师——计算机网络
  • 【有啥问啥】卡尔曼滤波(Kalman Filter):从噪声中提取信号的利器
  • 【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇(上)
  • PCL GridMinimum获取栅格最低点
  • 无人机在抗洪方面的作用!
  • 傅里叶变换(对称美)
  • 【JAVA高级】如何使用Redis加锁和解锁(一)、Lua脚本执行原理及流程
  • 引入Scrum激发研发体系活力
  • MySQL | 窗口函数
  • 信安 实验1 用Wireshark分析典型TCP/IP体系中的协议
  • 8. Bug 与 Error
  • SpringBoot2(Spring Boot 的Web开发 springMVC 请求处理 参数绑定 常用注解 数据传递 文件上传)
  • 去中心化自治组织(DAO)
  • JDK9与JDK8对比
  • Redis: 主从复制故障分析及解决方案
  • [Cocoa]_[初级]_[绘制文本如何设置断行方式]
  • 【星海saul随笔】Ubuntu基础知识
  • 构建高效的足球青训后台:Spring Boot应用
  • Web3.0 应用项目
  • 【网络安全 | 渗透工具】自动化 .env/.git文件检测
  • 【Linux 从基础到进阶】Spark 大数据计算引擎使用
  • React表单:formik、final-form和react-hook-form
  • PHP反序列化5(回调函数call_user_func_array)
  • 计算机毕业设计python+spark知识图谱音乐推荐系统 音乐数据分析可视化大屏 音乐爬虫 LSTM情感分析 大数据毕设 深度学习 机器学习
  • C#核心(3)类中的成员变量和访问修饰符