首页 > 其他分享 >实现登录认证

实现登录认证

时间:2023-08-14 22:35:21浏览次数:26  
标签:登录 实现 spring boot springframework 认证 org starter

登录

①自定义登录接口

​ 调用ProviderManager的方法进行认证 如果认证通过生成jwt

​ 把用户信息存入redis中【userId作为Key,用户信息作为Value】

​ ②自定义UserDetailsService

​ 【因为原本这个接口的实现类在内存中查询用户信息,不符合我们的要求,所以需要我们自己去实现它来自定义】在这个实现类中去查询数据库

 

校验

【校验的话,需要我们自己去自定义一个过滤器

​ ①定义Jwt认证过滤器

​ 获取token

​ 解析token获取其中的userid

​ 从redis中获取用户信息【如果每次请求都查询数据库就很浪费时间】

​ 存入SecurityContextHolder

 

引入依赖

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.security</groupId>
    <artifactId>SpringSecurity-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
    </parent>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.31</version>
        </dependency>
        <!--jwt依赖-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.0</version>
        </dependency>
    </dependencies>

</project>

 

标签:登录,实现,spring,boot,springframework,认证,org,starter
From: https://www.cnblogs.com/ixtao/p/17629965.html

相关文章

  • .net6webapi中配置Jwt实现鉴权验证
    JWT(JsonWebToken)jwt是一种用于身份验证的开放标准,他可以在网络之间传递信息,jwt由三部分组成:头部,载荷,签名。头部包含了令牌的类型和加密算法,载荷包含了用户的信息,签名则是对头部和载荷的加密结果。jwt鉴权验证是指在用户登录成功后,服务器生成一个jwt令牌并返回给客户端,客户端在......
  • Flutter实现将base64解码为image格式,并展示到页面上
    在Flutter中,你可以使用Image.memory来将Base64解码为图像并将其显示在页面上。下面是一个将Base64解码为图像并展示的示例代码:import'dart:convert';import'package:flutter/material.dart';classBase64ImageextendsStatelessWidget{finalStringbase64String;Bas......
  • 栈(Stack)的基本原理及算法实现
    栈(Stack)的基本原理及算法实现一、栈的基本概念栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的线性表,其特点是只允许在一端进行插入操作,而在另一端进行删除操作。栈的基本操作有:入栈(push)、出栈(pop)、查看栈顶元素(top)等。二、栈的实现原理数组实现:使用一组连续的内存空间来存储......
  • 基于四旋翼无人机的PD控制研究(Matlab代码实现)
    ......
  • 如何用Spring 原生注解 快速实现策略模式+工厂模式
    前言这阵子在做项目组重构的工作,工作中的一部分就是就目前代码库中与企业交互的逻辑抽离出来,单独做一个微服务,实现企业交互逻辑的关注点分离。在这里面我很自然而然的就用到了策略模式+工厂模式的方式,包装内部实现细节,向外提供统一的调用方式,有效的减少if/else的业务代码,使......
  • Springboot中实现适配器模式
    当在SpringBoot中实现适配器模式时,可以按照以下步骤进行详细的实现:1.首先,定义一个目标接口(TargetInterface):publicinterfaceTarget{voidrequest();}目标接口定义了适配器需要实现的方法。2.创建一个适配器类(AdapterClass),实现目标接口,并适配一个已有的类或接......
  • 敏感词过滤算法实现(前缀树)
    前缀树前缀树是N叉树的一种特殊形式,也叫Trie、字典树、查找树。通常来说,一个前缀树是用来存储字符串的。前缀树的每一个节点代表一个字符串(前缀)。每一个节点会有多个子节点,通往不同子节点的路径上有着不同的字符。子节点代表的字符串是由节点本身的原始字符串,以及通往该子节......
  • Pomelo官方demo ChatofPomelo简析之一——用户登录
    Pomelo官方demoChatofPomelo简析之一——用户登录 官方给的tutorial真是简单明了,简的刚开始学pomelo,压根就不知道代码写在哪。所以还是自己研究研究。首先看服务器端,处理逻辑的主要在game-server/app/servers下。有chat、connector和gate三种类型的服务器。connector:frontend前......
  • Boost Asio协程实现服务器
    参考:https://llfc.club/category?catid=225RaiVNI8pFDD5L4m807g7ZwmF#!aid/2RHA2vfllSmYXf4xcJqzzVtLrJt简介之前介绍了asio服务器并发编程的几种模型,包括单线程,多线程IOServicePool,多线程IOThreadPool等,今天带着大家利用asio协程实现并发服务器。利用协程实现并发程序有两个好......
  • 使用线程实现ACB的顺序输出
    在java中可以使用join方法来实现,join会阻塞当前方法,调用的当前方法执行结束后,才会继续往下执行!publicclassFoo{publicFoo(){}publicvoidA(){System.out.println("A");}publicvoidB(){System.out.println("B");}......