Spring Security学习笔记一
一、使用Spring Security
1、在pom 文件中添加Spring Security的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>${spring.version}</version>
</dependency>
2、启动项目Spring Security会在控制台中打印密码,用户名默认为user。

3、在浏览其中输入接口http://localhost:8081/menu/list,会跳转到login页面,弹出Spring Security默认的登录框。在登录框中输入用户名和密码后,会调用接口返回数据。
每次启动项目Spring Security都会生成一个不同的密码,这个是加密后的密码。


二、使用自定义用户、密码登录
在开发过过程中,当然要使用自己的用户名和密码登录,而不是Spring Security自带的用户名和密码登录。我的登录名和密码是admin/123456。
1、自定义UserDetailsServiceImpl实现Spring Security的UserDetailsService,实现UserDetailsService的loadUserByUsername(String username)方法。
在该方法中调用自定义的UserServic接口,根据用户名获取用户信息。然后将用户信息传递给自定义的实现了UserDetails的对象。

2、UserDetails的实现类获取用户的登录名和密码以及一些业务参数,如用户id,并设置所有返回类型为boolean的方法,返回true。默认设置权限为admin。

3、对密码进行加密
如果只有上面的步骤,则在登录时会报错,这是因为Spring Security中没有密码的的加密方式。解决方式是添加WebSecurityConfigurerAdapter的子类,
在该类中配置密码的加密方式。在验证后如果加密后的密码和保存的密码一致,则验证通过。



三、使用自己的登录页面实现登录
登录当然不能用Spring Security的页面来登录了,我们需要设计自己的登录页面来登录,登录成功后进入到首页。
1、首先配置登录成功和登录失败的处理类,返回的json格式的数据


2、WebSecurityConfigurerAdapter的子类中,重写configure(HttpSecurity httpSecurity)设置一些配置

当前后分离的时候,会涉及到跨域请求的问题,这个时候可以调用cors()方法来解决该问题。
3、Spring Security默认使用表单形式传递数据,如果前端是使用json传递数据,则需要自己写一个集成了UsernamePasswordAuthenticationFilter类的过滤器
过滤器重写父类的attemptAuthentication(HttpServletRequest request, HttpServletResponse response)方法,解析request请求中数据获取用户名和密码。
然后在WebSecurityConfigurerAdapter的子类中创建该过滤器,并进行注册。


初次学习Spring Security,其中有几点自己踩过的坑,在这里记下来,以便随时能够查看。
Spring Security学习笔记一的更多相关文章
- SpringBoot + Spring Security 学习笔记(五)实现短信验证码+登录功能
在 Spring Security 中基于表单的认证模式,默认就是密码帐号登录认证,那么对于短信验证码+登录的方式,Spring Security 没有现成的接口可以使用,所以需要自己的封装一个类似的 ...
- SpringBoot + Spring Security 学习笔记(三)实现图片验证码认证
整体实现逻辑 前端在登录页面时,自动从后台获取最新的验证码图片 服务器接收获取生成验证码请求,生成验证码和对应的图片,图片响应回前端,验证码保存一份到服务器的 session 中 前端用户登录时携带当 ...
- SpringBoot + Spring Security 学习笔记(二)安全认证流程源码详解
用户认证流程 UsernamePasswordAuthenticationFilter 我们直接来看UsernamePasswordAuthenticationFilter类, public clas ...
- Spring Security学习笔记
Spring Web Security是Java web开发领域的一个认证(Authentication)/授权(Authorisation)框架,基于Servlet技术,更确切的说是基于Servle ...
- SpringBoot + Spring Security 学习笔记(一)自定义基本使用及个性化登录配置
官方文档参考,5.1.2 中文参考文档,4.1 中文参考文档,4.1 官方文档中文翻译与源码解读 SpringSecurity 核心功能: 认证(你是谁) 授权(你能干什么) 攻击防护(防止伪造身份) ...
- Spring Security学习笔记(三)
之前提到过认证后怎么存放用户信息,令牌token是一种方式,session是另一种方式,这里介绍使用spring session data redis存储httpSession. 添加了以上依赖后,我 ...
- Spring security学习笔记(二)
对比两种承载认证信息的方式: session vs token token验证方案: session验证方案: session即会话是将用户信息保存在服务端,根据请求携带的session_id,从服务 ...
- Spring Security学习笔记(一)
认证和权限控制 AuthenticationManager是认证的主要接口,它只有一个authenticate方法,可以做3件事情. 返回一个认证信息(Authentication),表示认证成功 抛 ...
- Spring Security 学习笔记-securityContext过滤器过滤链学习
web.xml配置委托代理filter,filter-name默认与filter bean的名字保持一致. <filter> <filter-name>springSecuri ...
随机推荐
- Spring Boot 2.x基础教程:事务管理入门
什么是事务? 我们在开发企业应用时,通常业务人员的一个操作实际上是对数据库读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻 ...
- 题解:2018级算法第三次上机 C3-Zexal的浩瀚星辰
题目描述: 样例: 实现解释: 一道结合了火箭发射的贪心题目 知识点: 贪心,优先队列 题目分析: 根据题目描述可知,延迟后时间是正常推进的,也就是假设共有n个火箭,推迟k小时.则在到达k+1小时时, ...
- redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...
- L-BFGS算法详解(逻辑回归的默认优化算法)
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- 公众号迁移 原有数据库openid 更新主体openid
今天一个两年前做的公众号项目 要更改主体,随之而来的是公众号的迁移. 公众号迁移后关注的粉丝也会对应的进行迁移,还会给粉丝发送相关通知. 大体流程如下图 迁移的具体步骤我就不细说了.今天主要说的是 迁 ...
- Java常用API(Scanner类)
Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...
- C++算法 链式前向星存图
这个东西恶心了我一阵子,那个什么是什么的上一个一直是背下来的,上次比赛忘了,回来有个题也要用,只能再学一遍,之前也是,不会为什么不学呢.我觉得是因为他们讲的不太容易理解,所以我自己给那些不会的人们讲一 ...
- MySQL数据库的安装方法
- IDEA 2020.1.2 idea 2020.1.3下载 安装 一键破解
IDEA 2020.1.2 idea 2020.1.3下载 安装 破解 本项目只做个人学习研究之用,不得用于商业用途!若资金允许,请点击链接购买正版,谢谢合作!学生凭学生证可免费申请正版授权!创业公司 ...
- Linux系统查看硬件信息神器,比设备管理器好用100倍!
大家都知道,当我们的 Linux 系统计算机出现问题时,需要对其排除故障,首先需要做的是找出计算机的硬件信息.下面介绍一个简单易用的应用程序--HardInfo,你可以利用它来显示你电脑的每个硬件方面 ...