Spring-Security获取登录用户信息的三种方式

获取当前登录用户信息的三种方式

方式1

在方法中获取Principal对象

package com.WSL.servlet;

import com.itheima.message.MessageConstant;
import com.itheima.result.Result;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RequestMapping("/user")
@RestController
public class UserServlet {
    @RequestMapping("/getUsername")
    public Result getUsername(){
        //获取到登录的用户名 这里的User对象是Spring-Security提供的User
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if(user!=null){
            return new Result(true, MessageConstant.GET_USERNAME_SUCCESS,user.getUsername());
        }else {
            return new Result(false,MessageConstant.GET_USERNAME_FAIL);
        }
    }
}

在这里插入图片描述

方式2

在方式参数中直接注入Principal对象,调用getName的方法即可(注意包是java提供的对象)

import java.security.Principal;

import java.security.Principal;

@RequestMapping("/getUsername")
    public Result getUsername1(Principal principal){
        //获取到登录的用户名
        String name = principal.getName();
        if(name!=null){
            return new Result(true, MessageConstant.GET_USERNAME_SUCCESS,name);
        }else {
            return new Result(false,MessageConstant.GET_USERNAME_FAIL);
        }
    }

在这里插入图片描述

方式2

获取Authentication对象

@RequestMapping("/getUsername")
    public Result getUsername3(){
        //获取到登录的用户名
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        String name = authentication.getName();
        if(name!=null){
            return new Result(true, MessageConstant.GET_USERNAME_SUCCESS,name);
        }else {
            return new Result(false,MessageConstant.GET_USERNAME_FAIL);
        }
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值