springsecurity登录 学习笔记

1、http.basic(),这就是一个弹出小窗口登录

2、http.formlogin();这是是弹出一个表单登录页面。

3、filterSecurityInterception,这是最后一个过虑器,检查以什么方式登录。黄色方块。

蓝色方块ExceptionTranslationFilter捕获最后一个过虑器的异常,如果发性异常,

就会导向2图中定义的登录页(http.basic() 或者http.formlogin()).

4、用户信息的获取逻辑是被封装在接口:UserDetailService中,我们继承这个接口就要

实现其中的loadUserByUsername()这个方法。这个方法通过用户登录时输入的用户名,

返回一个UserDetails对象,定义一个实现类之后,我们一般要上类上加上@component注解

这样我们这个类就作 为一个bean被注放到spring 容器中。

5、关于security的加密解密,有一个接口,passwordEncode,有两个方法,一个是encode(),

一个是matchs(),分别是加密和匹配,第二个方法是security匹配用户输入的密码和查到的密码

比对。

这张图片说明了自定义表单认证主要用到的三个接口,UserDetailsService UserDetails PasswordEncodeer

6、对于自定义的登录页面,我们要在security的配置中放行,一般这么处理。

http.antMatchers(”/loginIndex.html","/要放行的资源“,”/中间用逗号隔开“).permetAll();别忘记斜杠

7、为了便于代码重用,我们对属性进行封装,在一个properties的包里有一个securityProperties的类,注入四个封装类,

分别是:BroswerProperties  ValidateCodeProperties Oauth2Properties SociaProperties,我们用这些类读取类似配置在

application.properties里的文件,例如:com.djbyg.security-cord.properties.loginPage=demo-login.html,用以代替默认的

登录页面。这种方法主要解决用配置代替硬编码。

这种方法的实现主要是用到一个注解:@ConfigurationProperties(prefix="com.djbyg"),这样,写了这个注解的类就可以

读取类中所有以com.djbyg开头的类。

下面这点代码是把securiytProperties.class做为配置注入spring

@Configuration
@EnableConfigurationProperties(SecurityProperties.class)
public class SecurityCoreConfig {

}

8、如果不确定返回的是一个对象还是一个字符串,或者是一个数字,我们可以这样作,定义一个只有一个属性的类:

public class SimpleResponse{

private Object content;

public SimpleResponse(Object content){

           this.content=content;

           }

...get()...set()...;}

}

这样,我们对返回类型可能是多咱类型的话就象下面这样:

return new SimpleResponse("这里可以是任何对象,包话字符串“)

9、有三个小点,对于登录成功后的处理,我们可以实现AutheticationSuccessHandler接口和

AutheticationFailureHandler接口。其中ObjectMapper是一个把对象转成JSON的类,springmvc在初

始化的时候已经为我们注入,只需加载就行,

9、下面说一说认证流程,security带着用户名密码进入验证过程

10、请求进去时第一个过虑器,请求返回时最后一个过虑器,就是这个securityContextPersistenceFilter,

进去是检查session中有没有securityContextHolder,

11、这是一个图片验证码的类,特别注意,expireTime=LocalTime.now().plusSeconds(expireIn)

下面这个类,将图片写到前端

图片验证码的类:

下面这个是重构过的,生成验证码的位数、宽、高和过期时间,都可以从配置中获得

12、rememberMe功能开发

  

下面是对数据库的操作,tokenRepository.setCreateTableOnStartup(true)表示要创建一张表,第一次启动会创建表,

再次启动请注释掉,要不会报表已存在的错。

注意其中rememberMe的配置部分,上下十行代码,加上前端的remember_me的选项,记住我功能就完成了。

13、短信验证码的发送

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值