首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取当前登录Spring的id

在Spring框架中,可以通过SecurityContextHolder来获取当前登录用户的信息,包括用户的id。具体步骤如下:

  1. 导入相关依赖:在项目的pom.xml文件中添加Spring Security的依赖。
代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  1. 创建一个自定义的UserDetailsService实现类:该类用于从数据库或其他数据源中获取用户信息。
代码语言:txt
复制
@Service
public class UserDetailsServiceImpl implements UserDetailsService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userRepository.findByUsername(username);
        if (user == null) {
            throw new UsernameNotFoundException("User not found");
        }
        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList<>());
    }
}
  1. 创建一个自定义的User实体类:该类用于表示用户信息。
代码语言:txt
复制
@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;

    private String password;

    // 省略其他属性和方法
}
  1. 创建一个Controller类:该类用于处理获取当前登录用户id的请求。
代码语言:txt
复制
@RestController
public class UserController {

    @GetMapping("/currentUserId")
    public Long getCurrentUserId() {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if (authentication.getPrincipal() instanceof UserDetails) {
            UserDetails userDetails = (UserDetails) authentication.getPrincipal();
            // 获取当前登录用户的id
            return userRepository.findByUsername(userDetails.getUsername()).getId();
        }
        return null;
    }
}

在上述代码中,通过SecurityContextHolder.getContext().getAuthentication()方法获取当前登录用户的认证信息,然后通过认证信息获取用户的用户名,再根据用户名从数据库中查询用户信息,最后返回用户的id。

这样,当客户端发送GET请求到"/currentUserId"路径时,将会返回当前登录用户的id。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。

腾讯云云服务器(CVM):提供可扩展的云服务器实例,支持多种操作系统和应用场景,适用于各种规模的业务需求。产品介绍链接地址:https://cloud.tencent.com/product/cvm

腾讯云数据库(TencentDB):提供高性能、可扩展的数据库服务,包括关系型数据库(MySQL、SQL Server等)和非关系型数据库(MongoDB、Redis等),满足不同业务场景的需求。产品介绍链接地址:https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

项目之通过Spring Security获取当前登录用户信息(6)

处理登录获取权限 以上注册过程中添加了“分配角色”,而各角色是对应某些权限,所以,“分配角色”过程就是“分配权限”过程!...在用户登录时,应该读取用户权限,以完成Spring Security在验证过程中授权,以保证后续在进行某些访问时,能给出正确判断,使得某些用户可以执行某些操作,而另一些用户可能因为没有权限而不能执行这些操作...通过Spring Security获取当前登录用户信息 当用户成功登录后,需要获取用户信息才可以执行后续操作,例如获取某用户权限、获取某用户问题列表、获取某用户个人信息等等。...Spring Security提供了简便获取当前登录用户信息做法,在控制器处理请求方法中,添加Authentication类型参数,或添加Principal类型参数,均可获得当前登录用户信息...()); userInfo.setGender(user.getGender()); userInfo.setType(user.getType()); return userInfo; 以后,当需要获取当前登录用户信息时

1.9K10
  • Spring Security 实战干货:如何获取当前用户信息

    在某些场景中我们需要获取当前用户是谁?如果你使用了Spring Secrity作为安全框架你可以通过以下手段获取当前用户。...,我喜欢使用一个抽象父类控制器来封装获取当前用户方法。...Principal java.security.Principal对象也可以获取当前用户信息,在Spring Security中该对象表现为Authentication对象,如果我们在Spring MVC...()方法也可以,但是我没有用过,感兴趣同学可以试试能不能在Spring Security框架中直接通过该方法获取。...总结 今天总结了如何Spring Security获取当前用户各种方法,它们各自场景都略有不同,你可以根据这些罗列选择最适合你应用场景。

    6.3K20

    WordPress || WordPress 获取当前分类 ID 几种方法

    WordPress 获取当前分类 ID 方法有很多,但是很多时候我们疏忽可能导致功能不完善,就拿我来说,在不同分类采用不同版式情况下,后台获取分类 ID 就存在一定错误,最终导致版式存在很严重问题...方法一 global $wp_query; $cat_ID = get_query_var('cat'); 上面的代码非常简单,直接通过全局变量来进行 ID 获取,但是这样方法建议使用在分类页面的情况下...函数获取当前页面的名称,接下来通过get_cat_ID 函数通过名称获取 ID,这个函数我们之前已经介绍过了,详见: [insert ids=”908″] 方法三 function get_current_category_id...);//获得当前分类目录ID } 通过调用功能代码来实现: 方法四 $category = get_the_category();//默认获取当前所属分类 echo $category[0]->cat_ID; //输出分类id 函数返回值: cat_ID

    2.3K20

    JS实现动态获取当前点击事件id属性值

    整个页面是通过ajax请求最新4部视频进行填充完成,视频列表又是通过template-web.js插件补上去,所以导致所有ID值都是一样,一开始给按钮添加一个事件,结果是所有播放按钮都是播放第一个视频...于是,想了好多办法,又把ID属性给弄成动态ajax请求属性值,实现了每个id不一样,接下来,因为点击播放要调用一个方法,进行解析视频播放,拼接成API+视频链接格式在新打开弹窗进行展示。...具体可以看下图: 要实现点击不同按钮,并且按钮ID是动态从ajax请求获取,还要添加点击视频拼接视频链接,参考了文章,可以获取点击按钮id值,然后使用button,将链接放在value中 Dom...对象id属性可以获取元素id值。...-- HTML结构 --> 播放 // javascript

    25.9K20

    Linux如何查询当前登录用户信息?

    查看当前用户名命令:whoami 如果只是想查看当前登录用户名,那么很简单,直接使用命令:whoami即可 示例: [root@xxx~]# whoami root 当前示例下用户名为root。...也可以加空格,使用who am i命令,可以查询到当前登录用户名、终端类型、时间和IP信息 示例: [root@xxx~]# who am i root pts/3 2019-01...-11 13:02 (36.49.58.93) 如上例所示,当前登录用户为root,伪终端(3号)形式登录登录时间及登录IP都有显示。...使用w命令查看当前用户及正在使用进程 使用命令w可以查看当前Linux服务器连接所有用户及用户正在使用进程: [root@xxx~]# w 13:07:38 up 3 days, 20:27,...Linux who命令用于显示系统中有哪些使用者正在上面,显示资料包含了使用者 ID、使用终端机、从哪边连上来、上线时间、呆滞时间、CPU 使用量、动作等等 [root@xxx~]# who root

    11.4K20

    前端如何获取当前时间_js 获取年份

    前端js获取当前时间方法: var time = new Date(); time.getYear(); //获取当前年份 time.getFullYear(); //获取完整年份(4位,1970...time.getMonth(); //获取当前月份(0-11,0代表1月) time.getDate(); //获取当前日(1-31) time.getDay(); //获取当前星期X(0-6,0代表星期天...) time.getTime(); //获取当前时间(从1970.1.1开始毫秒数) time.getHours(); //获取当前小时数(0-23) time.getMinutes(); //...获取当前分钟数(0-59) time.getSeconds(); //获取当前秒数(0-59) time.getMilliseconds(); //获取当前毫秒数(0-999) time.toLocaleDateString...(); //获取当前日期 var mytime=time.toLocaleTimeString(); //获取当前时间 time.toLocaleString( ); //获取日期与时间 为了让大家有一个更感官了解

    34K20

    svn如何删除当前账号,重新登录

    今天需要从svn上拉取工程,可是无论如何都显示我没有权限.思索半天才发现,我在eclipse填上远程链接后为什么没有提示我要输入账号和密码呢?...原来我用笔记本是之前公司别人用,因此svn一定是记住了之前人登录账号和密码,同时我要拉取工程没有此人权限,所以无法拉取.那么问题来了,没有提示我填账号和密码,那么怎么删除前人账号,重新登录我自己呢...百度发现一大神是这样处理: 找到snv安装路径,如果是默认安装的话,安装路径应该是:C:\Users\Administrator\AppData 接着点进去,进入到:C:\Users\Administrator...\AppData\Roaming\Subversion\auth : 最后清空svn.simple文件夹下所有文件即可,再次拉取代码时候就能自动提示要输入账号和密码了 发布者:全栈程序员栈长,转载请注明出处

    2.3K10

    如何用js获取当前月份天数

    获取每月天数时候,一般都是存储到一个数组中进行获取,但是如果是二月份的话就需要首先判断是否闰年,再确定是28还是29了。...js可以通过Date对象很方便获取到每月天数,在初始化Date对象时,我们可以通过这种方式: var d = new Date(2017,2,0); console.log(d.getDate())..., month, 0); return d.getDate(); } 在使用时传入想要获取年份和月份即可,如下: var totalDay = mGetDate(2004,2);...如果要获取当前月份天数: function mGetDate(){ var date = new Date(); var year = date.getFullYear();...JavaScript中day范围为1~31中值,我们获取第N-1个月第0天,就是N-1个月最后一天,这样就获得了第N个月有多少天。

    12.4K50
    领券