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

使用Keycloak检查用户是否已登录的Spring Security

康文昌
2023-03-14

如何检查用户是否在公共页面上的Keycloak中进行了身份验证,而不需要用户导航到某个受保护的页面或之前的登录页面?

共有1个答案

聂华翰
2023-03-14

我使用KeyCloak12.0.3,后端使用SpringBoot,前端使用angular-oauth2-oidc库。

我解决这个问题的方法是使用静默刷新特性。

当页面加载时,前端执行以下代码:

constructor(public oauthService: OAuthService) {
  this.oauthService.loadDiscoveryDocumentAndTryLogin().then(() => {
    if (!this.isLoggedIn()) {
      this.oauthService.silentRefresh().then(info => {
        // User logged in successfully
      }).catch(err => {
        // User needs to login
      });
    }
  }).catch(err => { 
    // You've some client configurations error
  });
}

public isLoggedIn() {
  return this.oauthService.hasValidIdToken() && this.oauthService.hasValidAccessToken();
}
 类似资料:
  • 问题内容: 我正在开发一个网站,要求用户必须登录才能使用该系统。当前功能为:当用户输入用户名和密码时,将在数据库中进行检查以检查该用户是否存在以及是否输入了正确的密码。然后才允许该用户登录。 到现在为止还不错,现在客户端希望向日志记录功能添加更多功能,即客户端只希望该用户存在一个会话。 IE。如果user1是从PC的一个浏览器登录的,则不应允许他从另一个系统或同一PC的另一个浏览器登录。 我怎么做

  • 问题很简单。我想限制来自不同机器/浏览器的相同登录的用户访问:只有一个实时用户会话是可能的。 库用于用户认证和管理。 当然,这可以使用简单的同步化地图等来完成。但问题是:是否为此制定了特殊机制? 这个问题的另一个变体:如何检索使用< code>apache shiro登录系统的所有主题的列表? UPD: 澄清我的问题。我的愿望是有一些这样的代码(我知道,没有这样的类异常,但这个想法必须更干净):

  • 问题内容: 我正在看这个网站,但似乎无法弄清楚该怎么做,因为它不起作用。我需要检查当前站点用户是否已登录(已验证),并且正在尝试: 尽管确定用户已登录,但它仅返回: 我可以执行其他请求(来自上面url的第一部分),例如: 这将返回成功的响应。 问题答案: Django 1.10+更新:现在是Django 1.10中的属性。为了向后兼容,该方法仍然存在,但在Django 2.0中将被删除。 对于Dj

  • 我有一个Spring MVC应用程序。它使用自己的自定义登录页面。成功登录后,将在HTTPSession中放置一个“LOGGED\u IN\u USER”对象。 我想只允许经过身份验证的用户访问URL。我知道我可以通过使用Web过滤器来实现这一点。但是,这部分我想使用Spring Security来完成(我的检查将保持不变-在HTTPS中查找“LOGGED_IN_USER”对象,如果存在,则您已登

  • 问题内容: 我有一个Spring MVC应用程序。它使用自己的自定义登录页面。成功登录后,在HTTPSession中放置一个“ LOGGED_IN_USER”对象。 我只允许经过身份验证的用户访问URL。我知道我可以通过使用网络过滤器来实现。但是,这部分是我想使用Spring Security要做的(我的检查将保持不变-如果已登录,请在HTTPSession中查找’LOGGED_IN_USER’对