springSecurity注销登录SecurityContextHolder.getContext().getAuthentication.getPrincipal() 为anonymousUse

springSecurity注销登录SecurityContextHolder.getContext().getAuthentication.getPrincipal()  为anonymousUser

gpt解释:

在 Spring Security 中,当用户注销登录后,如果你的 SecurityContextHolder.getContext().getAuthentication().getPrincipal() 返回 "anonymousUser",这表示用户已经成功注销并且没有有效的认证信息,因此匿名用户取代了之前的认证主体。

在 Spring Security 中,即使用户注销,SecurityContextHolder 仍然会保持一个 SecurityContext 对象,但是这时的 Authentication 对象将会被置为一个表示匿名用户的 AnonymousAuthenticationToken 对象,其 principal 名称通常为 "anonymousUser"。这是为了确保在用户注销后仍然能够保持一定程度的安全性。

因此,当你调用 SecurityContextHolder.getContext().getAuthentication().getPrincipal() 时返回 "anonymousUser",这意味着当前用户已注销登录,不再具有有效的身份认证信息。

所以返回 "anonymousUser"说明SecurityContextHolder里面没有认证的用户,原因是我在用postman测试的时候,没有携带token,SecurityContextHolder里面没有认证的用户

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然,下面是一个示例的Java Spring后端代码,用于实现用户注销功能: ```java package com.example.demo.controller; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class LogoutController { @GetMapping("/logout") public String logout() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null) { SecurityContextHolder.getContext().setAuthentication(null); } return "redirect:/login?logout"; } } ``` 在上面的代码中,我们使用了Spring Security来处理用户认证和授权。在`LogoutController`中,我们定义了一个`logout`方法,用于注销用户。 首先,我们通过`SecurityContextHolder.getContext().getAuthentication()`获取当前已认证的用户信息。 然后,我们检查认证信息是否存在。如果存在,我们通过`SecurityContextHolder.getContext().setAuthentication(null)`将认证信息设置为null,以实现注销操作。 最后,我们使用`"redirect:/login?logout"`重定向到登录页面,并在URL中添加参数`logout`,以便在前端界面显示注销成功的消息。 请注意,以上代码仅提供了一个示例,实际的注销过程可能涉及到其他操作,如清除用户的会话信息等。具体实现可能因应用程序的需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值