首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Keycloak中已登录用户的角色

获取Keycloak中已登录用户的角色
EN

Stack Overflow用户
提问于 2016-10-27 21:03:01
回答 4查看 7.3K关注 0票数 1

我用钥匙罩保护了我的NODE.js应用程序,它工作得很好

代码语言:javascript
复制
var Keycloak = require('keycloak-connect');
var session = require('express-session');
var keycloak = null;
var memoryStore = new session.MemoryStore();
keycloak = new Keycloak({
    store: memoryStore
});

app.get('/portal', keycloak.protect(), function (req, res) {
    res.sendFile(path.join(__dirname, '/views/index.html'));
});

在门户(index.html)中,我必须根据用户在keycloak中的角色显示/隐藏页面的不同部分。是否有机会读取当前用户的角色?

EN

回答 4

Stack Overflow用户

发布于 2016-12-21 18:13:26

密钥不提供用户的角色您可以使用loadUserInfo -js并通过tokenParsed获取角色

代码语言:javascript
复制
var Keycloak = require('keycloak-js');
var kc = Keycloak('./keycloak.json');

kc.init().success(function(authenticated) {

   alert(JSON.stringify(kc.tokenParsed)); 

}).error(function() {
            alert('failed to initialize');
});

希望能有所帮助

票数 6
EN

Stack Overflow用户

发布于 2019-08-05 16:48:52

目前,解析tokenParsed对象并不包含用户所拥有的确切角色信息。它确实有resource_access对象,在里面我们可以检查我们感兴趣的客户端,然后是角色。但这也可能包含为该客户端分配的多个角色。

在这种情况下,最好的方法是利用密钥罩的user Attribute特性。

只需在attribute选项卡中的user level上设置一个属性,例如prime_role和value,它就是您主要想要分配给此用户的角色。

然后,转到客户端并在Mapper选项卡中,添加类型为User Attribute的新映射器。

当您在tokenParsed对象上解析时,这将返回您所需的属性(即prime_role)。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2020-09-03 19:11:32

从Keycloak-js 11.0.2 (至少)开始,您可以通过以下方式直接访问角色数组,而无需解析令牌

代码语言:javascript
复制
constructor(public keycloakService: KeycloakService) { }
console.log(this.keycloakService.getKeycloakInstance().realmAccess.roles);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40285305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档