springsecurity安全登录框架

  • 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 用户允许访问,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值