Spring Security 安全框架

认证授权分析

用户在进行资源访问时,要求系统要对用户进行权限控制,其具体流程如图所示:

在这里插入图片描述

 SpringSecurity 认证逻辑实现

自定义登录逻辑

1.定义security配置类

2.定义登录接口实现类,自定义登录逻辑

1.基于用户名从数据库查询用户信息

2.1如果没有查到抛出usernameNotFoundException

2.2查询成功,将用户信息封装到UserDetails对象中返回

3.修改安全配置类

1.关闭跨域攻击,不关闭容易出错

2.自定义登录表单

2.1.设置登录页面

2.1.1设置请求用户名参数为username(默认就是username,可以自己修改,需要与表单同步 

2.1.2设置请求密码参数为password(默认就是password,可以自己修改,需要与表单同步

2.2.设置登录请求处理地址

2.3.设置登录成功跳转页面

2.4.登录失败访问的页面

3.认证设计

3.1设置要放行的资源

3.2设置需要认证的请求

4.配置异常处理对象

4.1处理没有认证的异常(DefaultAuthenticationEntryPoint)

4.2处理没有权限的异常(DefaultAccessDeniedExceptionHandler)

总结(Summary)
重难点分析

    SpringSecurity 产生背景?
    SpringSecurity 快速入门?(依赖,配置,登录认证,密码的加密-启动生成,配置文件)
    SpringSecurity 认证逻辑分析及实践?(认证方式-用户名和密码,登录页
    面,SecurityConfig.UserServiceDetail
,成功,失败,放行)
    SpringSecurity 授权逻辑分析及实现?(为什么,授权步骤,用到的注解)

FAQ 分析

    如何理解认证?(判定用户身份的合法性)
    如何校验用户身份的合法性?(用户密码,指纹,刷脸,刷身份证,…)
    如何进行身份认证?(自己写认证逻辑,借助框架去写认证逻辑-尊重框架规则)
    市场上的认证和授权框架有哪些?(SpringSecurity,Shiro)
    为什么会选择SpringSecurity?(功能强大,SpringBoot诞生后在配置方面做了大量的简化)
    SpringSecurity中的加密方式你用的什么?(Bcrypt,底层基于随机盐方式对密码进行hash不可逆加密,更加安全,缺陷是慢)
    SpringSecurity中你用过哪些API?(BcryptPasswordEncoder,UserDetailService,UserDetail,User,
    AuthenticationSuccessHandler,AuthenticationFailureHandler,…)
    为什么要进行权限控制?(防止非法用户破坏数据)
    SpringSecurity进行权限控制的步骤(@EnableGlobalMethodSecurity,@PreAuthorize)
    SpringSecurity在进行认证和授权时可能出现的异常?
    SpringSecurity在未认证和未授权的前提下访问授权资源时,出现的异常如何处理?
    作业:用户登录成功以后,用户信息默认存在哪里了? (Session)
    作业:用户登录成功以后,如何获取我们登录的用户信息?(这个用户的用户名,这个用户的权限)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值