- 一、今日需求?
- 二、认证授权
- 1.什么是认证?
- 2.什么是授权?
- 3.RBAC:基于角色的权限控制
- 4.登录流程
- 5.登录检查
- 6.授权检查
- 三.SpringSecurity
- 四.SpringSecurity入门案例
- CSRF检查
- 五.自定义UserDetailService
- 六.配置passwordEncoder
- 总结
一、今日需求?
1)认证授权的概念?
什么是认证,什么是授权?
2)认证授权代码阅读
3)SpringSecurity框架
4)SpringSecurity入门案例(重要)
5)SpringSecurity认证流程(重要)
6)SpringSecurity自定义UserDetailService(重要)
7)SpringSecurity授权流程与授权方式【配置类,注解】(重要)
8)自定义认证结果处理和授权结果处理
9)记住我
就是对用户身份的确认!
2.什么是授权?1)授权的概念:
2)如何授权?
必须要知道:用户访问的资源需要什么权限?
当前登录用户拥有哪些权限?
3)验证逻辑:
①首先判断用户当前请求访问的资源是否需要权限校验?因为有些资源是不需要权限的;
②如果需要权限校验,就要获取当前访问的资源需要什么权限,再获取当前用户拥有的权限,再将两者作比较;
4)授予权限:
当用户登录成功时,需要联表查询他拥有的权限列表,设置到当前登录用户对象身上,一起存储到会话中【session,redis,jwt等】
权限控制,在每个系统中基本都会有这五张表,如果要展示权限菜单,就要多一张menu表;
任何一个软件系统里都需要认证,认证检查,权限检查的业务;
同类型产品:Apache Shiro
1.依赖
2.必须提供一个SpringSecurity的核心配置类,要求继承WebSecurityConfigureAdapter类;
要求:重写configure方法,参数类型为Http那个
要在这个方法中配置:
要放行哪些请求:
表单登录配置
退出配置
哪些请求要校验什么权限:
哪些请求要登录才能访问
这个是放行登录请求,形参是可变参数,可以写多个
配置其他所有资源都需要登录后才能访问; .anyRequest().authenticated(); 这句话必须放在最后;
面试题:当总经理的token被偷了,别人拿到这个token,用postman模拟总经理的请求,然后用总经理的高权限账户对公司数据进行破坏;如何防止这个问题?
答:就可以使用CSRF检查,CSRF检查在检查账户登录时,不仅仅只校验token,还会校验ip地址,机器码,如果你的机器码,ip地址也更改了,CSRF就认为你的账户被盗了,就不会让你登录;别人拿到你的token也没用;
而在springsecurity的配置类中,可以使用.csrf().disable();关闭csrf检查,这样开发阶段效率更高,等到上线的时候,我们可以把csrf开启,提高安全性;
每点一次and()就代表这是一组;
这里的new User,是Security自己的User类;
encode方法是加密,matches方法是匹配输入的密码跟加密后的字符串,判断密码是否正确;
我们可以实现PasswordEncoder接口,自定义加密与匹配规则;
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。



