• springsecurity框架已经被springboot进行了集成,使用时直接导入启动器就可以了
    springSecurity 是一个安全框架,利用ioc/di和aop,为系统提供了声明式安全访问控制,程序对用户都要进行认证和授权,

    org.springframework.boot
    spring-boot-starter-security


    导入spring-boot-starter-security启动器就可以了,
    启动项目后就会发现不管是什么请求都是要出现一个登录页面

    密码是:控制台有

  • 当我们什么都不用配置时账户和密码是有spring security定义生成的,实际上账户和密码是从数据库中查询出来的,所以我们要通过自定义认证逻辑控制,需要实现UserDetailsService接口,这个接口中有一个方法loadUserByUsername() 该方法返回一个userDetails 这个也是一个接口,这个userDetails接口中方法是
    getAuthorities();返回所有权限
    getUsrename();获取用户名
    isAccountNonExpired()是否账号过期
    isAccountNonLocked()是否账号锁定
    isCredentialsNonExpired()密码是否过期
    isEnabled()是否可用
    这个接口的实现类是User类 这个类的构造方法有两个,参数有username:用户名 password 密码 authorities权限,不能为null
    用户名是客户端传过来的,密码是从数据库中查询出来的,会将传过来的密码和查询出来的密码进行验证,
    异常UsernameNotFoundException用户名没有发现异常,系统没有查询对应的用户名,

  • PasswordEncoder密码解析器 是一个接口
    spring security 容器中必须要有PasswordEnabler实例,所以在自定义登录逻辑时要求必须给容器注入给PasswordEnabler的bean对象
    实际上就是对密码进行加密,
    方法encode()是对密码参数进行加密,matches(rewpassword,encodepassword)匹配 原始字符串和加密后的字符串比较是否一样返回boolean类型,
    实现类用BCryptPasswordEncoder 是官方推荐使用的密码解析器

  • 自定义登录逻辑
    当想要自定义登录逻辑时,必须要用到UserDetailsService接口和Passwordencoder验证器,spring Security框架进行自定义登录逻辑时,必须要有password encoder实例,所以不能直接new


    自定义登录页面
    spring security 中可以设置自定义登录页面,需要修改配置类,
    修改配置类,主要是设置那个页面是登录页面,配置类需要继承WebSecurityConfigurerAdapte,重写configure方法
    successForwardUrl()设置登录成功后跳转的地址,
    loginPage()登录页面
    loginProcessingUrl登录页面表单提交地址,
    antMatchers()匹配内容,
    permitAll();允许

    在这个配置类中webSecurityconfigurerAdapter类中的configure方法中设置自定义登录页面
    在这个类中做表单认证,url拦截,关闭csrf防护,失败跳转,
    在配置方法中表单认证部分添加failureForwrodUrl(url)方法是表示登录失败后跳转的url页面,
    在设置url拦截时http.authorizeRequests();中将不会拦截失败页面的跳转antMatchers().permitAll()

  • 设置请求账户和密码的参数名
    当进行登录时会执行UsernamePasswordAuthenticationFilter过滤器,
    usernamePasrameter:账户参数名
    passwordParameter:密码参数名
    postOnly=true 默认情况下只允许post请求。
    在修改表单认证时可以设置usernameParameter(“myusername”)自定义用户名
    passwordParameter(“mypassword”);
    使用successForwardUrl()表示登录成功后转发请求地址。

  • 访问控制url
    认证中的配置主要在http.formLogin()中设置,
    在配置类中http.authorizeRequests()主要是对url进行控制,访问控制,其中方法有
    anyRequest()表示拦截所有请求,都要进行认证,
    anyRequest().authenticated()验证
    antMatcher()对某个请求进行处理,
    antMatcher().permitAll();//?是匹配一个字符 *0个或是多个 ** 0个或是多个目录

访问控制方法
spring security框架匹配到url后调用permitAll()表示不需要认证,随意访问,
authenticated()表示匹配到的url都需要被认证才能访问
denyAll()表示匹配的url都不允许被访问,
rememberMe()被remember me 用户允许访问,

springsecurity安全登录框架相关推荐

  1. springSecurity的登录验证

    原文:http://www.cnblogs.com/hzhuxin/archive/2011/12/14/2287363.html springSecurity的登录验证是由org.springfra ...

  2. 使用TextInputLayout分分钟构造一个酷炫登录框架

    Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,Android ...

  3. 分布式单点登录框架XXL-SSO

    2019独角兽企业重金招聘Python工程师标准>>> <分布式单点登录框架XXL-SSO> 一.简介 1.1 概述 XXL-SSO 是一个分布式单点登录框架.只需要登录 ...

  4. thymeltesys-基于Spring Boot Oauth2的扫码登录框架

    thymeltesys thymelte是一个基于Spring Boot Oauth2的扫码登录框架,使用PostgreSQL存储数据,之后会慢慢支持其他关系型数据库.即使你不使用整个框架,只使用其中 ...

  5. SpringSecurity:登录

    文章目录 SpringSecurity:登录 一.登录处理器 1.1 自定义AuthenticationSuccessHandler 1.2 自定义AuthenticationFailureHandl ...

  6. CAS单点登录框架使用

    CAS单点登录框架使用 CAS Server 1.GitHub上下载项目 https://github.com/apereo/cas-overlay-template/tree/5.3 5.3之后的都 ...

  7. SpringSecurity自定义登录界面

    为什么需要自定义登录界面? 答:因为SpringBoot整合SpringSecurity时,只需要一个依赖,无需其他配置,就可以实现认证功能.但是它的认证登录界面是固定那样的,如下图所示,但是我们希望 ...

  8. springboot 、thymeleaf、pagehelper 、springsecurity实现 登录,用户认证,分页的前端使用妹子UI

    springboot  .thymeleaf.pagehelper .springsecurity 实现 登录,用户认证,分页的前端使用妹子UIhttp://tpl.amazeui.org/. 项目下 ...

  9. SpringBoot学习之路---简单记录整合SpringSecurity实现登录认证授权

    基本上每一个项目都会有用户登录的这个功能,用户需要在登录之后才能够去访问一些资源,如果没登录的话就不能访问(403).我们可以自己编码去实现这样的业务逻辑,当然每一次都自己去编码是比较耗时的,毕竟市面 ...

  10. Swagger2进阶:集成统一认证和SpringSecurity的登录接口

    Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. SpringBoot集成Swagger之后,在Controller层添加相应的注解,即可生 ...

最新文章

  1. 基于Golang的CLI 命令行程序开发
  2. head first python菜鸟学习笔记(第六章)
  3. 如何使用Apache的ab工具进行网站性能测试
  4. mysql状态常用参数分析
  5. VM虚拟机Centos系统时间同步
  6. shell 中 $(( )) 与 $( ) 还有 ${ } 的区别
  7. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的排课管理系统
  8. sql:删除重复数据并且只保留id最小的一条
  9. 西门子cpu指示灯含义_CPU中的指示灯亮的意思
  10. Blender烘焙光照贴图
  11. Dojo1.11官方教程文档翻译(3.5)动画
  12. 抖音矩阵系统,抖音矩阵系统源码定制 tell me
  13. Web安全学习笔记一 序章
  14. 前端工程师考核总结_最新前端工程师周工作总结
  15. 美国全国就业普遍低迷“技术”就业却加速增长;爱立信发布2030年10大消费者趋势 | 美通社头条...
  16. Arduino 四针脚声音传感器
  17. 自学apicloud【Apicloud——关于上传图片、视频】
  18. python houdini_Houdini Python开发实战 课程笔记
  19. STM32L431 MCU温度计算
  20. Torch 和 OpenCV4.0 在风格转换中对应层(风格迁移)

热门文章

  1. C#几种截取字符串的方法(split 、Substring、Replace、remove)
  2. 导出数据库表为world文档说明,以及PowerDesigner导出表结构pdm设计文档
  3. Windows Server 2012 GUI与Core的切换
  4. 关于ipcam的UPnP或NAT的知识
  5. 最小上界sup(来自wiki)
  6. Named Return Value Optimization (具名返回值优化)
  7. 拓端tecdat|R语言模拟ARCH过程模型分析时间序列平稳性、波动性
  8. 拓端tecdat|R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列
  9. stn算子_C++学习(七)入门篇——C++算数运算符
  10. linux下设置好环境变量要重启计算机