当前位置: 首页 > 知识库问答 >
问题:

Spring Boot中匿名用户的oAuth令牌

阎懿轩
2023-03-14

共有1个答案

秦奇
2023-03-14

本来很简单的事情,你却把它搞复杂了。

我想为每个匿名用户生成不同的令牌。这可能吗

生成有效令牌后,用户将成为经过身份验证的用户。

String principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

您可以为匿名用户创建一个会话来标识他,如下所示

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Object principal = authentication.getPrincipal();

if(principal instanceof String && ((String)principal).equalsIgnoreCase("anonymousUser"))
{
    if(request.getSession(false) == null)
    {
        HttpSession session = request.getSession();
        session.setMaxInactiveInterval(300); // As per Your requirement
    //  store session id from session and ip address from request in to DB or cache if required and use it
    }
    else
    {
        //identify anonymous user against session id and stored details
    }
}

您可以通过注册筛选器来实现这一点

  • 过滤器的输送Spring顺序应在SpringSecurityFilterChain之后。
  • 在spring boot中,您可以通过FilterRegistrationBean
  • 来实现
 类似资料:
  • 应用程序类: application.yml:

  • 我们使用的是带有Spring Security性的Spring MVC。 该网站应可供匿名用户使用,包括首选项设置(例如打开或关闭页面上的筛选器)。 如果匿名用户在第二天返回(在新会话中),应记住这些首选项。 匿名用户可以随时选择注册配置文件(用户/密码组合),以前匿名用户设置的所有首选项都应存储在新的配置文件中。 或者,匿名用户可以选择使用已注册的配置文件登录,并且应该向他们提供将匿名设置的首选

  • 我试图用Spring的授权授予流来保护我的REST Api。 我正试图使用这个auth访问/api/user,它来自用户登录后的auth服务器令牌请求... 怎么了?

  • 我有一个Keycloak(独立)V1.9.4。最后在AWS实例上使用Wildfly 10安装安装程序,并尝试使用Keycloak(通过Keycloak的登录页面)和Twitter4j来验证Twitter用户,然后明显地让我的应用程序验证并查看用户的时间线等。 我已经配置了身份提供程序(Twitter)、领域和我的客户端应用程序。 我还在apps.Twitter.com上设置了一个Twitter应用

  • 我的所作所为 首先,我承认我缺乏Spring安全知识。 我可以接收access_token、refresh_token等等,一切都非常好,甚至我可以使用接收的access_token访问url http://localhost:8282/melayer/articles (二)。curl http://localhost:8282/melayer/articles-h“授权:携带者 我想了解的是

  • 我希望能够识别唯一的匿名用户,所以我可以在数据库中为该用户存储一些信息。一个客人购物车之类的东西。 我并不特别想使用会话,因为如果我一直使用无会话数据方法构建,我喜欢服务器之间的故障转移。 在spring security或generic spring中,是否有任何方法可以获得一个标识令牌,我可以使用它来标识特定的匿名用户(主键)?