首页 > 其他分享 >后端如何获得登录人的信息以及全局异常处理器

后端如何获得登录人的信息以及全局异常处理器

时间:2024-10-27 21:19:56浏览次数:3  
标签:web 登录 ResultVO springframework 处理器 org import 全局 public

目录

后端如何获得登录人的信息

前提:导入 jakarta.servlet-api

 <dependency>
       <groupId>jakarta.servlet</groupId>
       <artifactId>jakarta.servlet-api</artifactId>
       <optional>true</optional>
   </dependency>

将 RequestContextHolder.getRequestAttributes()).getRequest() 强转成 ServletRequestAttributes 类型

import com.user.common.jwt.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.HttpHeaders;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import java.util.Map;

public class LoginContext {

    /**
     * 怎么获取登录用户id
     * 1、获取HttpServletRequest
     * 2、从HttpServletRequest中获取请求头Authorization
     * 3、通过JwtUtil解析请求头(请看上一篇文章)
     * 4、获取jwt中的用户id
     */
    public static String getUserId() {
        HttpServletRequest request = getRequest();
        String token = request.getHeader(HttpHeaders.AUTHORIZATION);
        Map<String, Object> claimsMap = JwtUtil.parse(token);
        return claimsMap.get("id").toString();
    }

    public static HttpServletRequest getRequest() {
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    }
}

全局异常处理器

一定不能忘记加注解 @RestControllerAdvice 和 @ExceptionHandler

import com.user.common.core.exception.CustomException;
import com.user.common.core.vo.ResultVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.stream.Collectors;

/**
 * 全局异常处理器
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 处理校验异常
     */
    @ExceptionHandler
    public ResultVO<Object> handle(MethodArgumentNotValidException e) {
        log.error(e.getMessage(), e);
        String message = e.getAllErrors().stream().map(ObjectError::getDefaultMessage).collect(Collectors.joining(";"));
        return ResultVO.failed(message);
    }

    /**
     * 处理其他异常,返回系统异常(通过后台查看错误)
     */
    @ExceptionHandler
    public ResultVO<Object> handle(Exception e) {
        log.error(e.getMessage(), e);
        return ResultVO.failed();
    }

    /**
     * 处理自定义异常 CustomException
     */
    @ExceptionHandler
    public ResultVO<Object> handle(CustomException e) {
        log.error(e.getMessage(), e);
        return ResultVO.failed(e.getMessage());
    }
}

标签:web,登录,ResultVO,springframework,处理器,org,import,全局,public
From: https://blog.csdn.net/yyhyc0/article/details/143274984

相关文章

  • jenkins内置提供的全局变量
    jenkins内置提供的全局变量列出环境变量让我们首先列出所有可用的环境变量。您可以通过两种不同的方法进行操作。您可以${YOUR_JENKINS_HOST}/env-vars.html在Jenkins主服务器上打开页面,以获取HTML页面上列出的所有环境变量的列表方法2:pipeline{        agentan......
  • 64位处理器介绍
    64位处理器表示处理器能够处理和存储 64位(bit)宽度的数据。从技术上来说,这意味着处理器的寄存器宽度、数据总线和地址总线都可以处理64位的二进制数,从而在性能和内存寻址方面提供显著的优势。以下是详细解释:1. 基本概念64位表示处理器的寄存器可以一次性处理64位的数据。......
  • Java 中使用 Session 对象(以登录、退出功能为例)
    一、创建Session(登录功能)使用session.setAttribute(value,key)保存key属性的值value@RequestMapping("/login")publicStringlogin(Stringusername,Stringpassword,HttpSessionsession){//验证账号密码是否错误if(username!="张三"||password!=......
  • MT管理器永久解锁版 不需要登录/安装即可使用
    [应用名称]应用名称:MT管理器[应用版本]应用版本:2.145[应用大小]应用大小:22.5m[适用平台]适用平台:安卓[应用简介]MT管理器是一款功能全面、操作渐变、用户体验优秀的文件管理和apk逆向修改工具。[应用截图] [免费下载链接]下载链接https://download.csdn.net/do......
  • 微信小程序开发——注册登录(需要云服务器支撑噢)
    话不多说,先上图:(这是我实现的注册登陆界面,而且登陆实现后可以长时间保留) 前景工作:1、在云环境下构建:login云函数2、一张图片:3、pages下面构建pages/mine/index路径。 1、app.js代码//app.jsApp({onLaunch(){wx.cloud.init({env:......
  • js逆向实战之某网游登录参数password加密
    声明:本篇文章仅用于知识分享,不得用于其他用途网址:https://www.37.com/加密逻辑访问网址,输入用户名和密码,看触发哪些数据包。注意:这里的流量包要选择all,如果选择fetch/XHR则看不到任何数据包。明显看到password被加密了,先去搜索url中的关键字api/login.php。可以看到......
  • amd处理器兼容不了哪些主流软件
    AMD处理器与某些软件存在兼容问题通常归因于制造商优化、软件设计或驱动程序更新。1、专业图形和设计软件、2、某些专用游戏、3、高度优化的应用程序、4、老旧或未更新的软件。专业图形和设计软件,如某些版本的AdobePremierePro或Autodesk3dsMax,可能在针对英特尔处理器的优化......
  • 通过duxapp提供的基础方法、UI组件、全局样式,快速编写项目
    使用duxapp,我是如何实现快速完成项目开发的?像下面这个例子,这个项目有140多个页面,但是真实的开发时间,在熟练使用duxapp的情况下,不会超过两周,并且可以将它兼容APP、小程序、H5这里仅展示了其中一部分页面,这个项目主要包含下这些功能购物订单流程售后退换文章发布门店功能......
  • Windows服务器修改默认远程登录端口
    起因公司一台windows服务器中了病毒,排查找到了后门文件并做了处理(处理过程不作描述),通过快照恢复了系统,修改默认远程登录端口,可以增加服务器的安全性,这里做个记录,具体步骤如下。修改注册表使用Win+R快捷键调出“运行”窗口,输入regedit,然后按Enter打开注册表编辑器。......
  • 12.1.1 全局变量
    1.全局变量我们之前所见过的所有的变量,都是定义在函数内部的.那个时候我们说,这些变量呢,叫做本地变量,其实当时我们没说,如果c语言当中所有的变量都是定义在函数内部的,那就没有本地变量非本地变量一说了对吧.正是因为我们可以把变量定义在函数的外面,这时候它就不是本地变......