广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot实现token登录的示例代码
  • 881
分享到

SpringBoot实现token登录的示例代码

2024-04-02 19:04:59 881人浏览 泡泡鱼

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

摘要

为什么引入token机制? 在进行登录验证时,我们需要session或cookie会话进行验证,客户端包括浏览器、app、微信小程序、公众号,只有浏览器有session和cookie

为什么引入token机制?

在进行登录验证时,我们需要session或cookie会话进行验证,客户端包括浏览器、app、微信小程序、公众号,只有浏览器有session和cookie机制,当我们脱离浏览器用app等向服务端发请求就没有session和cookie机制,这时我们就需要使用token令牌进行登录验证。

代码实现

先建个util包,并创建TokenUtil类用于生成token

TokenUtil类代码 

package com.qcby.util;
 
import com.qcby.entity.User;
 
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
 
public class TokenUtil {
    
    private static Map<String, User> tokenMap=new HashMap<>();
 
    
    public static String generateToken(User user){
        //生成唯一不重复的字符串
        String token = UUID.randomUUID().toString();
        tokenMap.put(token,user);
        return token;
    }
 
    
    public static boolean verify(String token){
        return tokenMap.containsKey(token);
    }
 
    
    public static User getUser(String token){
        return tokenMap.get(token);
    }
}

LoginInterceptor类代码

package com.qcby.interceptor;
 
import com.qcby.util.TokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.WEB.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
 
import javax.servlet.Http.httpservletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class LoginInterceptor  implements HandlerInterceptor {
 
   
    //Controller逻辑执行之前
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle....");
        String uri = request.getRequestURI();
        System.out.println("当前路径"+uri);
 
        
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
 
        String token=request.getHeader("qcby-token");
 
        if (!TokenUtil.verify(token)) {
            // 未登录跳转到登录界面
            throw  new RuntimeException("no login!");
        } else {
            return true;
        }
    }
 
    //Controller逻辑执行完毕但是视图解析器还未进行解析之前
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle....");
    }
 
    //Controller逻辑和视图解析器执行完毕
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("afterCompletion....");
    }
}

实现类

@RestController
@RequestMapping("user")
public class UserController { 
    @Autowired
    private UserService userService;
    @apiOperation("用户登录接口")
    @RequestMapping(value="login",method = {RequestMethod.GET,RequestMethod.POST})
    public Map<String,Object>login(User user){
        Map<String,Object> map=new HashMap<>();
        map.put("code",0);
        if(StringUtils.isEmpty(user.getUsername())||StringUtils.isEmpty(user.getPassword())){
            map.put("msg","用户或密码为空!");
            return map;
        }
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("username",user.getUsername())
                .eq("passWord",user.getPassword());
        User user1=userService.getOne(queryWrapper);
        if(user1!=null){
 
            String token= TokenUtil.generateToken(user1);
            map.put("cod",1);
            map.put("data",user1);
            map.put("token",token);
        }else {
            map.put("msg","用户名或密码错误!");
        }
        return map;
    }
}

拦截器类可以参考这篇文章,这个token验证就是在拦截器上改动的。

SpringBoot拦截器实现登录拦截 

需要有postman验证

到此这篇关于SpringBoot实现token登录的示例代码的文章就介绍到这了,更多相关SpringBoot token登录内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot实现token登录的示例代码

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

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

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

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

下载Word文档
猜你喜欢
  • SpringBoot实现token登录的示例代码
    为什么引入token机制 在进行登录验证时,我们需要session或cookie会话进行验证,客户端包括浏览器、app、微信小程序、公众号,只有浏览器有session和cookie机...
    99+
    2022-11-13
  • SpringBoot整合token实现登录认证的示例代码
    1.pom.xml <dependencies> <dependency> <groupId>org.springframework.b...
    99+
    2022-11-13
  • vue获取token实现token登录的示例代码
    使用token做登录验证的思路大致如下: 1、在第一次登录的时候前端调用后端的接口,把用户名和密码传给后端。 2、后端收到请求,验证用户名和密码,验证成功后,返回给前端一个token...
    99+
    2022-11-12
  • SpringBoot整合Sa-Token实现登录认证的示例代码
    目录依赖登录退出登录前后端分离今天分享的是 Spring Boot 整合 Sa-Token 实现登录认证。 依赖 首先,我们需要添加依赖: 关...
    99+
    2022-11-13
  • SpringBoot实现扫码登录的示例代码
    目录一、首先咱们需要一张表二、角色都有哪些三、接口都需要哪些?四、步骤五、疯狂贴代码Spring Boot中操作WebSocket最近有个项目涉及到websocket实现扫码登录,看...
    99+
    2022-11-13
  • springboot简单实现单点登录的示例代码
    什么是单点登录就不用再说了,今天通过自定义sessionId来实现它,想了解的可以参考https://www.xuxueli.com/xxl-sso/ 讲一下大概的实现思路吧:这里有...
    99+
    2022-11-12
  • SpringBoot整合Keycloak实现单点登录的示例代码
    目录1. 搭建Keycloak服务器2. 配置权限2.1. 登陆2.2. 创建Realm2.3. 创建用户2.4. 创建客户端2.5. 创建角色2.6. 配置用户角色关系2.7. 配...
    99+
    2022-11-13
  • SpringBoot拦截器实现登录拦截的示例代码
    可以对URL路径进行拦截,可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等  实现代码 新建 interceptor包 添加拦截器代码 package c...
    99+
    2022-11-13
  • SpringBoot如何实现token登录
    这篇文章主要为大家展示了“SpringBoot如何实现token登录”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot如何实现token登录”这篇文章吧。为什么引入token机制...
    99+
    2023-06-29
  • Django实现简单登录的示例代码
    目录创建django项目使用模型的url.py加载静态文件页面跳转创建数据库模型提交表单提交ajax提交创建django项目 创建项目的命令行语句: django-admin st...
    99+
    2022-11-12
  • React实现登录表单的示例代码
    作为一个Vue用户,是时候扩展一下React了,从引入antd、配置less、router,终于实现了一个简单的登录表单。 代码如下: import React from 'r...
    99+
    2022-11-12
  • Android实现微信登录的示例代码
    目录一、布局界面二、MainActivity.java微信登录的实现与qq登录类似。不过微信登录比较麻烦,需要拿到开发者资质认证,花300块钱,然后应用的话还得有官网之类的,就是比较...
    99+
    2022-11-12
  • Redis实现登录注册的示例代码
    目录1. 引言2. 流程图及代码实现2.1 生成验证码保存到Redis2.2 登录验证2.3 请求拦截器3. 总结1. 引言 在传统的项目中,用户登录成功,将用户信息保存在sessi...
    99+
    2022-11-13
  • Springboot+SpringSecurity实现图片验证码登录的示例
    这个问题,网上找了好多,结果代码都不全,找了好多,要不是就自动注入的类注入不了,编译报错,要不异常捕获不了浪费好多时间,就觉得,框架不熟就不能随便用,全是坑,气死我了,最后改了两天....
    99+
    2022-11-13
  • 基于Java实现扫码登录的示例代码
    目录基本介绍原理解析1. 身份认证机制2. 流程概述代码实现1. 环境准备2. 主要依赖3. 生成二维码4. 扫描二维码5. 确认登录6. PC 端轮询7. 拦截器配置效果演示1. ...
    99+
    2022-11-13
  • uniapp实现钉钉扫码登录示例代码
    由于uniapp暂无钉钉授权登录所以本文将钉钉扫码登录作为网页嵌入uniapp,最终实现钉钉扫码登录app 1. 用H5调起钉钉扫码登录 钉钉在网页端的扫码登录可参考钉钉文档:扫码登...
    99+
    2022-11-12
  • SpringBoot登录验证token拦截器的实现
    目录注解定义token生成与验证拦截器定义拦截器配置定义拦截器的方法执行类注解使用返回值-全局异常类定义各种测试不传token制造可行的假token伪造token测试拓展:从请求中获...
    99+
    2022-11-13
  • django+vue实现注册登录的示例代码
    注册 前台利用vue中的axios进行传值,将获取到的账号密码以form表单的形式发送给后台。 form表单的作用就是采集数据,也就是在前台页面中获取用户输入的值。numberVa...
    99+
    2022-11-12
  • SpringBoot使用Sa-Token实现登录认证
    目录一、设计思路二、登录与注销三、会话查询四、Token 查询五、来个小测试,加深一下理解一、设计思路 对于一些登录之后才能访问的接口(例如:查询我的账号资料),我们通常的做法是增加...
    99+
    2023-05-14
    SpringBoot Sa-Token登录认证 SpringBoot 登录认证
  • SpringBoot集成JWT实现Token登录验证
    目录 1.1 JWT是什么? 1.2 JWT主要使用场景 1.3 JWT请求流程 1.4 JWT结构 二,SpringBoot集成JWT具体实现过程 2.1添加相关依赖 2.2自定义跳出拦截器的注解 2.3自定义全局统一返回值方法,异常类...
    99+
    2023-09-06
    spring boot 后端 java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作