iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot SpringSecurity 详细介绍(基于内存的验证)
  • 278
分享到

SpringBoot SpringSecurity 详细介绍(基于内存的验证)

SpringBoot SpringSecuritySpringBoot SpringSecurity内存 2023-05-18 08:05:51 278人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录配置 spring Security (入门)SpringBoot 集成 SpringSecurity + Mysql + Jwt 附源码,废话不多直接盘SpringBoot已经

SpringBoot 集成 SpringSecurity + Mysql + Jwt源码,废话不多直接盘
SpringBoot已经为用户采用默认配置,只需要引入pom依赖就能快速启动Spring Security。
目的:验证请求用户的身份,提供安全访问
优势:基于Spring,配置方便,减少大量代码

内置访问控制方法

  • permitAll() 表示所匹配的 URL 任何人都允许访问。
  • authenticated() 表示所匹配的 URL 都需要被认证才能访问。
  • anonymous() 表示可以匿名访问匹配的 URL 。和 permitAll() 效果类似,只是设置为 anonymous() 的 url 会执行 filter 链中
  • denyAll() 表示所匹配的 URL 都不允许被访问。
  • rememberMe() 被“remember me”的用户允许访问 这个有点类似于很多网站的十天内免登录,登陆一次即可记住你,然后未来一段时间不用登录。
  • fullyAuthenticated() 如果用户不是被 remember me 的,才可以访问。也就是必须一步一步按部就班的登录才行。

角色权限判断

  • hasAuthority(String) 判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑
  • hasAnyAuthority(String ...) 如果用户具备给定权限中某一个,就允许访问
  • hasRole(String) 如果用户具备给定角色就允许访问。否则出现 403
  • hasAnyRole(String ...) 如果用户具备给定角色的任意一个,就允许被访问
  • hasIpAddress(String) 如果请求是指定的 IP 就运行访问。可以通过 request.getRemoteAddr() 获取 ip 地址

引用 Spring Security

Pom 文件中添加

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="Http://Maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>vipsoft-parent</artifactId>
        <groupId>com.vipsoft.boot</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>vipsoft-security</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-WEB</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

运行后会自动生成 passWord 默认用户名为: user

默认配置每次都启动项目都会重新生成密码,同时用户名和拦截请求也不能自定义,在实际应用中往往需要自定义配置,因此接下来对Spring Security进行自定义配置。

配置 Spring Security (入门)

在内存中(简化环节,了解逻辑)配置两个用户角色(admin和user),设置不同密码;
同时设置角色访问权限,其中admin可以访问所有路径(即 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); //简化操作,将用户名和密码存在内存中,后期会存放在数据库Redis中 auth.inMemoryAuthentication() .passwordEncoder(passwordEncoder) .withUser("admin") .password(passwordEncoder.encode("888")) .roles("ADMIN") .and() .withUser("user") .password(passwordEncoder.encode("666")) .roles("USER"); } @Override protected void configure(httpsecurity http) throws Exception { http.authorizeRequests() //配置拦截的路径、配置哪类角色可以访问该路径 .antMatchers("/user").hasAnyRole("USER") .antMatchers("/*").hasAnyRole("ADMIN") //配置登录界面,可以添加自定义界面, 没添加则用系统默认的界面 .and().fORMLogin(); } }

添加接口测试

package com.vipsoft.web.controller;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DefaultController {
    @GetMapping("/")
    @PreAuthorize("hasRole('ADMIN')")
    public String demo() {
        return "Welcome";
    }
    @GetMapping("/user/list")
    @PreAuthorize("hasAnyRole('ADMIN','USER')")
    public String getUserList() {
        return "User List";
    }
    @GetMapping("/article/list")
    @PreAuthorize("hasRole('ADMIN')")
    public String getArticleList() {
        return "Article List";
    }
} 

到此这篇关于SpringBoot SpringSecurity 介绍(基于内存的验证)的文章就介绍到这了,更多相关SpringBoot SpringSecurity内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot SpringSecurity 详细介绍(基于内存的验证)

本文链接: https://www.lsjlt.com/news/211840.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot SpringSecurity 详细介绍(基于内存的验证)
    目录配置 Spring Security (入门)SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘SpringBoot已经...
    99+
    2023-05-18
    SpringBoot SpringSecurity SpringBoot SpringSecurity内存
  • Struts2之Validator验证框架的详细介绍
    Struts2中提供了数据校验验证数据例如验证邮件、数字等。验证方式有3种:一是通过validate()方法,二是通过Xml,三是使用注解方式。一、初始化首先定义一个User类package com.cyw.test;import java...
    99+
    2023-05-31
    struts 验证 dat
  • 基于jvm java内存区域的介绍
    jvm虚拟机在运行时需要用到的内存区域.广泛一点就是堆和栈,其实不然,堆和栈只是相对比较笼统的说法,真正区分有如下几个...
    99+
    2023-05-31
    java jvm 内存
  • SpringBootJWT接口验证实现流程详细介绍
    目录添加pom.xml修改配置文件创建简单的测试接口使用拦截器实现需求:只有用户登录成功后,才能访问其它接口,否则提示需要进行登录 项目仓库地址:https://gitee.com/...
    99+
    2024-04-02
  • Java对象的内存布局详细介绍
    目录一、对象头1)、Mark Word2)、类型指针3)、数组长度(只有数组对象才有)二、实例数据三、对齐填充四、使用JOL工具分析对象内存布局在HotSpot虚拟机中,对象在内存中...
    99+
    2023-02-13
    Java对象内存布局 Java内存布局 Java对象内存
  • 详细介绍 PHP内存分配函数
    PHP 是一种流行的服务器端脚本语言,广泛用于 Web 开发。 与大多数编程语言一样,PHP 需要分配内存来创建变量、数组、对象和其他数据结构。 PHP 提供了几个分配函数来动态分配内存。 这些功能...
    99+
    2024-02-27
  • SpringBoot+SpringSecurity实现基于真实数据的授权认证
    目录(一)概述(二)前期项目搭建(三)认证与授权的实现(四)总结(一)概述 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,Spring Secur...
    99+
    2024-04-02
  • 关于redis命令的详细介绍
    小编给大家分享一下关于redis命令的详细介绍,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!              &...
    99+
    2024-04-02
  • 详细介绍HTML的基本用法
    HTML是一种基本的网页设计语言,是创建网页的重要工具之一。对于想要学习HTML的初学者来说,了解HTML的基本用法是至关重要的。本文将详细介绍HTML的基本用法,让你轻松入手。一、HTML的基本概念HTML,全称是HyperText Ma...
    99+
    2023-05-14
  • 阿里云ECS4G内存的详细介绍及与其他内存的比较
    随着云计算的发展,阿里云作为国内领先的云服务商,提供了丰富的云产品和服务。其中,阿里云ECS( Elastic ComputeService)是其主要的云服务器产品之一。本文将详细介绍阿里云ECS4G内存的性能和特点,并与其他内存进行比较...
    99+
    2023-10-30
    内存 阿里 详细介绍
  • Android内置SQLite的使用详细介绍
    目录一、创建数据库  1、新建数据库帮助类2、在数据库帮助类中输入代码3、代码讲解  二、添加数据1、界面效果2、准备工作3、布局界面 activity_main...
    99+
    2024-04-02
  • oracle rac内核参数的详细介绍
    本篇内容介绍了“oracle rac内核参数的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.在...
    99+
    2024-04-02
  • 基于SpringBoot整合SSMP的详细教程
    目录基于SpringBoot实现SSMP整合整合JUnit整合MyBatis整合MyBatis-Plus总结基于SpringBoot实现SSMP整合 SpringBoot之所以好用,...
    99+
    2022-11-13
    SpringBoot整合SSMP SpringBoot SSMP
  • Springboot中项目的属性配置的详细介绍
    目录正文1. 少量配置信息的情形2. 多个配置信息的情形3. 指定项目配置文件4. 总结正文 我们知道,在项目中,很多时候需要用到一些配置的信息,这些信息可能在测试环境和生产环境下会...
    99+
    2024-04-02
  • 关于pyqt5弹出提示框的详细介绍
    目录前言1.软件关闭弹框2.信息提示框3.错误提示框4.警告提示框5.关于弹窗附:Python-PyQt5错误提示弹框总结前言 最近在用pyqt5设计软件时,想到了一些关于提示框的操...
    99+
    2024-04-02
  • SpringBoot静态资源的访问方法详细介绍
    目录一. 静态资源二. 静态资源访问目标三. 静态资源访问前缀1. 默认访问路径为 /2. 配置访问前缀3. 配置静态资源默认访问位置四. 欢迎页及网页图标设置1. 欢迎页的设置2....
    99+
    2024-04-02
  • Vue替代vuex的存储库Pinia详细介绍
    目录前言Pinia介绍1. 创建一个Pinia store2. 访问State3. Pinia修改数据的四种方法4. 重置State5. 替换state6. 订阅状态7. Gette...
    99+
    2024-04-02
  • HTMl5的存储方式sessionStorage和localStorage的详细介绍
    本篇内容主要讲解“HTMl5的存储方式sessionStorage和localStorage的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTMl5的...
    99+
    2024-04-02
  • Linux系统基本的内存管理知识介绍
    这篇文章主要介绍“Linux系统基本的内存管理知识介绍”,在日常操作中,相信很多人在Linux系统基本的内存管理知识介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统基本的内存管理知识介绍”的疑...
    99+
    2023-06-12
  • Java中关于Collections集合工具类的详细介绍
    Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作