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

    org.springframework.boot
    spring-boot-starter-security
  • spring 项目 空闲登出时间设置 spring登陆框架_自定义

  • 导入spring-boot-starter-security启动器就可以了,
    启动项目后就会发现不管是什么请求都是要出现一个登录页面
  • spring 项目 空闲登出时间设置 spring登陆框架_spring_02

  • 密码是:控制台有
  • spring 项目 空闲登出时间设置 spring登陆框架_登录页面_03

  • 当我们什么都不用配置时账户和密码是有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 项目 空闲登出时间设置 spring登陆框架_登录页面_04


  • spring 项目 空闲登出时间设置 spring登陆框架_登录页面_05

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

  • 在这个配置类中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 用户允许访问,