
Spring Security 5
基于spring boot和spring cloud的 Spring Security实现
free_java
这个作者很懒,什么都没留下…
展开
-
spring security 5 (12)-自动登录 rememberMe
当你登录了某个网站,过了好几天再去访问,可能会发现当前已经是登录状态,因为客户端一直保存着你的登录信息。虽然服务端session也可以维持用户会话状态,但是如果要维持一两周甚至更长时间,会造成服务端数据量太大。所以这里存储在客户端如cookie。rememberMe实现自动登录 protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .anyRequest().aut原创 2020-08-01 11:39:47 · 564 阅读 · 0 评论 -
spring security 5 (11)-防止异地重复登录
本篇介绍如何实现一个用户只允许同时在一个地点登录基本配置 protected void configure(HttpSecurity http) throws Exception { http.formLogin().and() .sessionManagement() .maximumSessions(1).expiredUrl("/expired");maxi...原创 2019-04-21 13:01:52 · 3293 阅读 · 3 评论 -
spring security 5 (10)-digest摘要认证
摘要认证和基本认证一样,也是由http协议定义的,对用户使用的角度来说,它们并没有区别。但是摘要认证的安全性要高出很多,并且永远不会以明文传输密码。必须先理解基本认证基本配置spring security内置了DigestAuthenticationFilter,封装了摘要认证逻辑,不需要你去构建AuthenticationManager。但是构建UserDetailsService是必不...原创 2019-04-14 11:29:46 · 3139 阅读 · 1 评论 -
spring security 5 (9)-httpBasic基本认证
httpBasic是由http协议定义的最基础的认证方式。每次请求时,在请求头Authorization参数中附带用户/密码的base64编码,参考base64。这个方式并不安全,不适合在web项目中使用。但它是一些现代主流认证的基础,而且在spring security的oauth中,内部认证默认就是用的httpBasic。httpBasic基本配置注意,这里没有配formLogin,也...原创 2019-04-07 10:42:11 · 14034 阅读 · 2 评论 -
spring security 5 (8)-密码加密BCryptPasswordEncoder
从spring security5开始,要求必须手动配置密码加密方式,spring官方推荐使用BCrypt加密,并明确指出sha和md5都是不安全的。本篇仅介绍BCrypt的用法。BCrypt加密与验证 BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); String result = encoder.en...原创 2019-03-31 11:54:54 · 7571 阅读 · 0 评论 -
spring security 5 (7)-异常处理
spring security主要有两大异常,登录时认证失败异常401,及请求时没有权限异常403。AuthenticationException(401)登录不成功,如密码错误等可抛出BadCredentialsException,它是AuthenticationException的子类。 if (!code.equals("123")) { ...原创 2019-03-24 09:33:35 · 5497 阅读 · 0 评论 -
spring security 5 (6)-认证过滤器
上一篇实现了自定义认证,但是要想彻底自定义整个认证流程,还差一个环节,即认证过滤器,它是认证的入口。本篇仍然以验证码为例,介绍自定义认证过滤器。自定义Authentication第4篇讲过,自定义过滤器的主要作用就是生成未认证Authentication,作为入参给AuthenticationManager认证。而在第5篇,根据AuthenticationProvider的support...原创 2019-03-17 08:34:04 · 3215 阅读 · 0 评论 -
spring security 5 (5)-自定义认证
第3篇讲过,用户登录时,系统会读取用户的UserDetails对其认证,认证过程是由系统自动完成的,主要是检查用户密码。而在现实中,登录方式并不一定是检查密码,也可能是验证码或其他,此时就需要自定义认证。AuthenticationProvider自定义认证逻辑在AuthenticationProvider的authenticate方法中完成,第4篇讲过,认证的入参是一个未认证Authen...原创 2019-03-10 09:49:44 · 5725 阅读 · 1 评论 -
spring security 5 (4)-认证流程
本篇介绍登录时的认证流程,及其相关的重要概念接口等,现在只需要有一个基本概念,以后将以此为基础介绍自定义配置,到时结合本篇会更加清晰。SecurityContext用户登录时,会将用户相关信息组装成一个Authentication对象,而SecurityContext的主要作用就是保存Authentication。并且 SecurityContext会通过session来维持状态,所以登录...原创 2019-03-02 16:00:26 · 2420 阅读 · 0 评论 -
spring security 5 (3)-UserDetails用户详情
用户登录时,系统会根据用户名,从存储设备查找该用户的密码及权限等,将其组装成一个UserDetails对象。并用UserDetails中的数据对用户进行认证,决定其输入的用户名/密码是否正确。从内存认证之前两篇我使用的是预置的user用户,以下则自定义一个user用户,密码123,权限是auth。user用户登录时会根据这些信息自动构建一个UserDetails,保存在内存中。 pass...原创 2019-02-24 19:26:03 · 14164 阅读 · 0 评论 -
spring security 5 (2)-Http请求权限
用户访问网站时,只能请求其有权限的网址,而不能手动去请求其权限以外的网址。基本配置以下配置了3个url请求时各需要的角色或权限,注意,这并不代表现实业务中的角色和权限,你可以根据需要自己决定。 public void configure(HttpSecurity http) throws Exception { http .authorizeRequests() //进行...原创 2019-02-17 08:40:54 · 3439 阅读 · 0 评论 -
spring security 5 (1)-formLogin表单登录和注销
表单登录即在form表单中输入用户名/密码,提交登录,在spring security中默认配置了formLogin来实现表单登录。pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent&l...原创 2019-02-10 09:16:44 · 16203 阅读 · 4 评论