ASP.NET Core 2.2 Web API项目:使用端点实现电子邮件确认回调URL [英] ASP.NET Core 2.2 Web API project: implement email confirmation callback url using endpoint

查看:74
本文介绍了ASP.NET Core 2.2 Web API项目:使用端点实现电子邮件确认回调URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于生成确认令牌,然后向用户发送确认电子邮件链接,我正在尝试做一些与Microsoft(Docs)提供的示例稍有不同的操作。

目前,我在CreateUserAsync控制器方法中有几个步骤来创建用户,如果成功,则会生成一个电子邮件确认令牌(使用GenerateEmailConformationTokenAsync方法)-到目前为止,似乎有效的令牌会生成。

然后,下一步是使用SendGrid(根据Microsoft文档配置)生成一个确认电子邮件链接(使用Request.Program、Request.host等属性),并通过电子邮件发送给用户-同样,这一步非常有效,我能够看到测试电子邮件出现在测试Gmail帐户中。

问题似乎出在生成的代码(令牌)上-我尝试使用WebUtility的UrlEncode方法,但这对令牌没有任何影响它保持不变,当我尝试测试URL时收到一条消息:

请求筛选模块配置为拒绝包含双重转义序列的请求

我如何在Web API项目中实现上述内容的任何建议(与Microsoft文档站点上的示例相反:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/accconfirm?view=aspnetcore-2.2&tabs=visual-studio)。

推荐答案

我通过将POST更改为GET并使用[FromQuery]属性来生成提供必要查询字符串参数值的更传统的查询字符串参数样式URL来解决此问题。

在使用WebUtility.EncodeUrl方法创建确认URL时,我还必须确保对电子邮件确认令牌进行编码,但我发现使用ASP.NET Core时,我的控制器方法(具有[FromQuery]属性)正在对传入的字符串进行解码,因此我不需要在到达时进行解码--但这可能是我正在使用的最新版本的ASP.NET Core 2.2中的一项功能。

这篇关于ASP.NET Core 2.2 Web API项目:使用端点实现电子邮件确认回调URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆