首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在中间件功能对话框中验证JWT

如何在中间件功能对话框中验证JWT
EN

Stack Overflow用户
提问于 2020-05-07 08:14:40
回答 1查看 65关注 0票数 0

我们正在发送一个带有JWT令牌的HTTP标头,我们已经在dialogflow控制台中配置了这个标头。

我们希望在上一步中验证此令牌,以便将请求发送到特定意图,例如welcome_intent。

我们使用“中间件”作为上一步,验证是正确的,它应用于每一次通信。我们想知道,

如果JWT出错,我们希望返回一个错误,并且不继续使用相关的意图,例如: welcome_intent。

我们尝试在“中间件”中以"conv.close“结束流,但我们已经看到流仍在继续,并且它转到与查询相关联的意图。

我们如何跳出流程并在中间件函数中返回错误?

代码语言:javascript
运行
AI代码解释
复制
const {
    dialogflow
} = require('actions-on-google');

const fulfillment = dialogflow({
    clientId: "clientIdDialogflow",
    debug: true
});

const jwt = require('jsonwebtoken');

fulfillment.middleware(async (conv) => {
    let tokenIncorrect = await utils.verifyJWT(conv);
    if (tokenIncorrect) {
        conv.close("Lo siento pero no puedes continuar con la conversación.");
    }
});

// Intents functions 
fulfillment.intent("welcome_intent", .....);
EN

回答 1

Stack Overflow用户

发布于 2020-07-21 22:45:44

您应该能够抛出一个UnauthorizedError来终止意图处理程序内部的会话。

下面是一些相关文档和一些示例代码:https://actions-on-google.github.io/actions-on-google-nodejs/2.12.0/classes/_service_actionssdk_conversation_conversation_.unauthorizederror.html

但是,这在中间件中是行不通的。正如您在https://github.com/actions-on-google/actions-on-google-nodejs/blob/9f8c250a385990d28705b3658364c74aa3c19adb/src/service/actionssdk/actionssdk.ts#L345-L350中看到的,中间件在UnauthorizedError处理之前应用,该处理包装了对意图处理程序的调用:https://github.com/actions-on-google/actions-on-google-nodejs/blob/9f8c250a385990d28705b3658364c74aa3c19adb/src/service/actionssdk/actionssdk.ts#L370-L389

在实现时,中间件不能直接用于优雅地结束实现。但是,您可以修改conv对象。例如,您可以在这些情况下更改目标意图(conv.intent = 'UNAUTHORIZED'),然后为该意图添加一个始终抛出UnauthorizedError的处理程序。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61652967

复制
相关文章
如何在.net6webapi中配置Jwt实现鉴权验证
jwt是一种用于身份验证的开放标准,他可以在网络之间传递信息,jwt由三部分组成:头部,载荷,签名。头部包含了令牌的类型和加密算法,载荷包含了用户的信息,签名则是对头部和载荷的加密结果。
郑子铭
2023/08/29
9640
如何在.net6webapi中配置Jwt实现鉴权验证
权限验证JWT
1. 结构 Header { "alg": "HS256", "type": "JWT" } Payload 截屏2021-10-16 下午8.28.25.png { "sub": "123456", "name": "John", "admin": true } Signature 截屏2021-10-16 下午8.45.09.png 2. 服务端token // 生成token const jwt = require('jsonwebtoken') const t
愤怒的小鸟
2021/12/13
4380
Apache NiFi中的JWT身份验证
JSON Web Tokens为众多Web应用程序和框架提供了灵活的身份验证和授权标准。RFC 7519概述了JWT的基本要素,枚举了符合公共声明属性的所需编码,格式和已注册的声明属性名称(payload里属性称为声明)。RFC 7515中的JSON Web签名和RFC 7518中的JSON Web算法描述了JWT的支持标准,其他的比如OAuth 2.0框架的安全标准构建在这些支持标准上,就可以在各种服务中启用授权。
@阿诚
2022/03/04
4.3K0
JWT跨域验证
JWT(JSON Web Token)是一种轻量级的、可扩展的、基于JSON的身份验证和授权机制,用于在不同的应用程序之间安全地传输信息。JWT是由三部分组成:头部、载荷和签名。头部通常包含有关JWT的元数据,如过期时间、签名算法等;载荷包含要传输的信息,例如用户ID、角色等;签名则用于验证JWT是否被篡改过。
小颜同学
2023/08/24
3200
JWT跨域验证
如何在 Bash Shell 脚本中显示对话框
这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子。使用这些工具,你的脚本能够告知用户当前程序运行的状态并能与用户进行交互。这两个工具的不同之处在于显示消息框或者对话框的方式。Zenity用GTK工具包创建图形用户界面,而whiptail则在终端窗口内创建消息框。
哲洛不闹
2018/09/14
3K0
如何在 Bash Shell 脚本中显示对话框
使用 JWT 实现 Token 验证
在开发过程中要实现登录,授权的基础功能有很多方法,通过 JWT 来实现非常方便,安全。因为是无状态的,比较于cookie 方式的实现,JWT能很好的解决跨域请求的问题。
张云飞Vir
2020/03/26
3.2K0
vue12Jwt详解+JWT组成+JWT的验证过程+JWT令牌刷新思路+代码
6.2 WEB APP项目每次请求后台数据时(将JWT令牌从请求头中带过来),       验证通过,刷新JWT,并保存在响应头返回给客户端,有效时间30分钟
天蝎座的程序媛
2022/11/18
3.2K0
vue12Jwt详解+JWT组成+JWT的验证过程+JWT令牌刷新思路+代码
如何在Vue Router中应用中间件
中间件是我们在软件开发中的一个古老而强大的概念,当我们在应用程序中使用路由相关模式时,它非常有用。
前端知否
2020/03/23
1.2K0
如何在Vue Router中应用中间件
JWT单点登录功能
以注册功能为例,前端注册平台,向后端发送用户名密码,后端保存到数据库,并且利用JWT生成一串token返回给前端,注册拦截器,此后前端每次访问后端接口,都会经过拦截器,拦截器对token进行解析,成功则继续逻辑,失败则返回错误信息。失效则需要重新登录。登录功能和注册功能差不多,只是一个查询,一个保存,其他逻辑相同。
全栈程序员站长
2022/08/25
1.2K0
JWT单点登录功能
SpringBoot+JWT完成token验证
JWT官网: https://jwt.io/ JWT(Java版)的github地址:https://github.com/jwtk/jjwt
用户1212940
2022/04/13
8220
SpringBoot+JWT完成token验证
SpringBoot集成JWT实现token验证
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。
用户4283147
2022/10/27
1.1K0
SpringBoot集成JWT实现token验证
SpringBoot整合JWT实现验证登陆
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的, 特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息, 以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
乱敲代码
2019/06/03
1.3K0
JWT的TOKEN续期功能
JWT里有一个关键的东东,就是续期TOKEN,即TOKEN快过期时,刷新一个新的TOKEN给客户端. 办法如下: 1.后端生成TOKEN
星痕
2019/02/13
7.1K0
PyQt5 对话框 数据验证
本篇介绍PyQt5对话框的数据合法性的验证。有两种验证方式:预防式验证(preventative)和 提交后验证 (post-mortem)。预防式验证适合于单个部件的数据验证,可以通过选择合适的部件类型,设置最大字符长度或者数字的大小范围,应用正则表达式等等来进行预防式验证。提交后验证可应用于单个控件,也可应用于多部件交叉验证。两种验证策略可单独或者组合使用。
用户6021899
2019/08/14
1.2K0
JWT实现跨域身份验证
JWT(JSON Web Token)是目前流行的跨域认证解决方案,是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。
别团等shy哥发育
2023/02/25
1.5K0
JWT实现跨域身份验证
PHP怎样使用JWT进行授权验证?
JWT可以取代以往的基于 COOKIE/SESSION 的鉴权体系,是目前最热门跨域鉴权的解决方案,接下来从 JWT 的原理,到 PHP 示例代码,简单说明业务怎样使用 JWT 进行授权验证。
极客开发者
2022/01/18
3.5K0
rails api+react+jwt验证教程
5.在models的application_record.rb中添加has_secure_password字段
不知雨
2019/01/14
1.6K0
SpringBoot整合JWT实现验证登陆
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的, 特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息, 以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
程序员小明
2019/11/08
1.7K0
SpringBoot整合JWT实现验证登陆
SpringBoot整合JWT实现验证登陆
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的, 特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息, 以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
杨小杰
2019/06/03
1.2K0
点击加载更多

相似问题

Swagger中间件的JWT验证

219

无法在中间件JWT EXPRESS中验证令牌

10

express jwt -身份验证中间件发布

10

在验证JWT令牌之后访问dotnetcore中间件

211

如何在jwt中验证用户

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档