我用钥匙罩保护了我的NODE.js应用程序,它工作得很好
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中的角色显示/隐藏页面的不同部分。是否有机会读取当前用户的角色?
发布于 2016-12-21 18:13:26
密钥不提供用户的角色您可以使用loadUserInfo -js并通过tokenParsed获取角色
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');
});希望能有所帮助
发布于 2019-08-05 16:48:52
目前,解析tokenParsed对象并不包含用户所拥有的确切角色信息。它确实有resource_access对象,在里面我们可以检查我们感兴趣的客户端,然后是角色。但这也可能包含为该客户端分配的多个角色。
在这种情况下,最好的方法是利用密钥罩的user Attribute特性。
只需在attribute选项卡中的user level上设置一个属性,例如prime_role和value,它就是您主要想要分配给此用户的角色。
然后,转到客户端并在Mapper选项卡中,添加类型为User Attribute的新映射器。
当您在tokenParsed对象上解析时,这将返回您所需的属性(即prime_role)。
希望这能有所帮助。
发布于 2020-09-03 19:11:32
从Keycloak-js 11.0.2 (至少)开始,您可以通过以下方式直接访问角色数组,而无需解析令牌
constructor(public keycloakService: KeycloakService) { }
console.log(this.keycloakService.getKeycloakInstance().realmAccess.roles);https://stackoverflow.com/questions/40285305
复制相似问题