• Spring Security简介


    Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的 成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方 案。 正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控 制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权 (Authorization)两个部分,这两点也是 Spring Security 重要核心功能。 (1)用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问 该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认 证过程。通俗点说就是系统认为用户是否能登录 (2)用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户 所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以 进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的 权限。通俗点讲就是系统判断用户是否有权限去做某些事情

    SpringSecurity 本质是一个过滤器链:

    代码底层流程:重点看三个过滤器: FilterSecurityInterceptor:是一个方法级的权限过滤器, 基本位于过滤链的最底部 ExceptionTranslationFilter:是个异常过滤器,用来处理在认证授权过程中抛出的异常 UsernamePasswordAuthenticationFilter :对/login 的 POST 请求做拦截,校验表单中用户名,密码。

    SpringSecurity Web 权限方案

    设置登录系统的账号、密码 方式一:在 application.properties spring.security.user.name=atguigu spring.security.user.password=atguigu

    方式二:编写配置文件 package com.atguigu.config; @Configuration public class SecurityConfig { BCryptPasswordEncoder passwordEncoder=new BCryptPasswordEncoder(); String password=passwordEncoder.encode("123"); auth.inMemoryAuthentication().withUser("lucy").password(password).roles("admin") ;@Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } }

    方式三:实现接口UserDetailsService

    自定义实现类设置

    第一步 创建配置类,设置使用哪个userDetailsService实现类

     第二步 编写实现类,返回User对象,User对象有用户名密码和操作权限

     

    自定义设置登录页面、路径、跳转

     

    自定义登录页面

    <form action="/login"method="post"> 用户名:<input type="text"name="username"/><br/> 密码:<input type="password"name="password"/><br/> <input type="submit"value=" 提交"/> </form> 页面提交方式必须为 post 请求,所以上面的页面不能使用,用户名,密码必须为username,password 原因: 在执行登录的时候会走一个过滤器 UsernamePasswordAuthenticationFilter

    如果修改配置可以调用 usernameParameter()和 passwordParameter()方法

    基于角色或权限进行访问控制 配置文件和MyUserDetailsService分别设置

     

    用户没有访问权限时会返回403页面

    也可以自定义403页面,需要修改配置文件

    用户注销

    在配置类中添加退出配置 //退出 http.logout().logoutUrl("/logout").logoutSuccessUrl("/test/hello").permitAll();

  • 相关阅读:
    Locust 场景执行:Web UI 中执行
    第1章 计算机网络和因特网
    目录
    计算机网络--自定向下的方法
    mysql索引总结
    7_异常处理
    6_面向对象-下之类的结构:内部类
    6_面向对象-下之关键字:interface
    6_面向对象-下之关键字:abstract
    6_面向对象-下之关键字:final
  • 原文地址:https://www.cnblogs.com/zwbsoft/p/16370664.html
Copyright © 2020-2023  润新知