我在API上使用Vertx框架对JWT令牌进行授权。在用户被授权并且令牌被解密之后,我想要访问令牌的内容,尤其是令牌中的“userId”字段。
最初,我是用req
作为RoutingContext
作为以下内容来访问它的:
req。user()。主体()。getString(“用户ID”)
在另一台机器上编译之前,它一直按预期工作。在另一台机器上编译时
req。user()。principal()
仅包含字段access_token
,其中包含仍然加密的JWT。
解决方法是通过
req。user()。属性()。getJsonObject(“accessToken”)。getString(“用户ID”)
我已经在4台不同的机器上测试过了。其中两个使用principal,另外两个需要属性。它似乎只是在哪台机器上编译,而不是在什么机器上运行。代码没有在机器之间更改。Java、Maven和Vertx版本每次都是相同的。
我在网上找到的一些解决方案只是检查所需的字段是否在主体中,以及是否不使用属性。不过,这似乎是一个糟糕的变通方法。必须有一个合适的方法来访问它。
访问解码令牌中的值的正确方式是什么?为什么它似乎会随着编译机器的不同而变化?
在vert. x3. x中,令牌总是被解码为JSON对象,该对象将是主体
。在vert. x 4中,已经在auth n/z区域做了很多工作,所以经验法则是:
主体
包含允许创建此用户
对象的“源”属性
属性
包含身份验证n/z过程中解码/生成的属性
因此,如果您使用vert,您应该期望解码的令牌始终处于attributes
状态。x4。最近的一次提交将这些属性添加回JWT auth的主体
,以保持向后兼容。
细节:令牌现在没有解码到主体
的原因是用户
对象与身份验证提供程序分离。因此,即使用户
是从JWTAuth
创建的,它也可以被OAuth2Auth
使用。因此,内部结构需要保持一致。其次,带有OpenID Connect的Oauth2也使用令牌,但有几种令牌:
访问\u令牌
id\u令牌
将这些标记解码给委托人意味着,在某些情况下,属性可能会重叠。这些重叠之一是与令牌的到期/有效性相关的属性。在某些情况下,使整个用户
验证处于错误状态。
最后,我们现在可以将vertx auth用于服务器端auth n/z,也可以用于客户端auth。这意味着我们需要保留原始令牌(它是主体),以便在不篡改客户端请求的情况下快速添加它,以便“代表”执行身份验证。
介绍 除了内置的 用户认证 服务之外, Lumen 还提供了用户授权和资源访问控制的方案。有很多种方法与辅助函数能帮你处理授权逻辑。 总的来说,Lumen 中的使用和 Laravel 大同小异,我们会在这个文档中指出不同的地方,完整的用户授权文档还需要查阅 Laravel 授权文档 。 与 Laravel 的不同 定义权限 与 Laravel 相比,Lumen 的用户授权的不同之处在于如何定义权限
主要内容:权限类型说明授权就是为某个用户赋予某些权限。例如,可以为新建的用户赋予查询所有数据库和表的权限。MySQL 提供了 GRANT 语句来为用户设置权限。 在 MySQL 中,拥有 GRANT 权限的用户才可以执行 GRANT 语句,其语法格式如下: 其中: priv_type 参数表示权限类型; columns_list 参数表示权限作用于哪些列上,省略该参数时,表示作用于整个表; database.table
本文向大家介绍mysql5.7创建用户授权删除用户撤销授权,包括了mysql5.7创建用户授权删除用户撤销授权的使用技巧和注意事项,需要的朋友参考一下 一, 创建用户: 命令: 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. p
我是Spring Security的新手,我正在开发一个需要使用Spring Security 3.2进行身份验证和授权的web应用,身份验证部分工作正常,但授权不正常。下面是我的Spring Security配置xml片段。 使用此配置,除了授权之外,其他一切都可以正常工作。我有两个用户,即tim@abc.com(角色=管理员)和bob@abc.com(role=USER),但是当我尝试使用bo
版权设置 (版权用于设置前台页面底部的网站版权,是授权用户最重要的标志,只有授权用户才可更改版权信息,否则是要追究法律责任的哦)
获取Skill列表 请求参数: 字段 类型 必须? 说明 callback Callback 是 请求结果回调 示例: swift RokidMobileSDK.media?.requestSkillListIntent(completion: { (error, json) in // ... }) SkillBean具体格式如下: { "skillId": "RC528E2D