使用。Net Core 3.0<这基本上是作为发送用户帐户确认电子邮件的帐户验证模块<下面是我编写的创建URL并发送到用户电子邮件的代码<要在电子邮件中发送的确认链接使用LinkGenerator库生成,然后与localhost连接以创建完整的URL<电子邮件中发送的URL创建如下,SendAccountConfirmationMail方法用于向用户发送电子邮件。
[HttpPost("registerUser")]
public IActionResult NewUser(UserModel userModel)
{
EmailSender emailSender = new EmailSender();
string response = userDAL.NewUser(userModel).ToString();
if (response != "EmailExists" && response != "UsernameExists")
{
EncryptDecrypt _encryptDecrypt = new EncryptDecrypt();
string code = emailSender.GenerateEmailCode();
string LinkEmail= _encryptDecrypt.Encrypt(response, "1359Mali_");
string url = _linkGenerator.GetPathByAction("ConfirmEmail", "User", new { email = LinkEmail, code = code });
url = "https://localhost:44312" + url;
bool EmailSent = emailSender.SendAccountConfirmationEmail(response,url);
if (EmailSent == true)
{
userDAL.InsertUserEmailConfirmationCode(response, code);
}
}
return Ok(response);
}
我成功地收到了带有重定向链接的电子邮件,但当我单击该链接时,它会在浏览器中打开,并显示无法使用Http Error405的页面,并且未命中ConfirmEmail方法上的调试器。确认邮件方法如下:
[HttpPost("ConfirmEmail/{email}/{code}")]
public IActionResult ConfirmEmail( string email, string code)
{
EncryptDecrypt _encryptDecrypt = new EncryptDecrypt();
string emailDecrypted = _encryptDecrypt.Decrypt(email, "1359Mali_");
string codeDecrypted = _encryptDecrypt.Decrypt(code, "1359Mali_");
string response = Convert.ToString(userDAL.VerifyCode(emailDecrypted, codeDecrypted));
if (response.ToUpper() == "EMAILNOTCONFIRMED")
{
string message = "EMAILNOTCONFIRMED";
return StatusCode(200, message);
}
else if (response.ToUpper() == "EMAILCONFIRMED")
{
//Call login medthod
return Ok();
}
else
{
string message = "An Error Occured";
return StatusCode(200, message);
}
}
启动。反恐精英
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseHttpsRedirection();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
在电子邮件链接中不可能使用HttpPost。请通过将其标记为HttpGet来更新您的操作以接收GET请求。
如果您希望您的操作也接收HttpPost请求,那么您可以添加HttpGet和HttpPost,这样操作将同时接收GET和POST请求。
当浏览器在页面上打开时。这是Get请求。所以你应该改变:
[HttpPost("ConfirmEmail/{email}/{code}")]
public IActionResult ConfirmEmail( string email, string code)
到:
[HttpGet("ConfirmEmail/{email}/{code}")]
public IActionResult ConfirmEmail( string email, string code)
我正在使用camel和camel-restlet组件来路由RESTFul web服务。我的路由配置如下所示: 我有一些输入路由配置,比如:
我正在构建angular2应用程序,目前我有一个家庭组件与菜单栏和路由器出口的主要内容。我添加了登录机制,所以如果用户没有经过身份验证,那么登录页面将显示在整个屏幕上,登录后用户将被路由到上面结构的主/主组件。 当我运行登录页面加载的应用程序时,成功验证后,它会将我路由到主页,但在加载菜单的主页(如Dashboard1、Dashboard2、Report1等)中,链接无法正常工作。当我点击任何菜单
我有一个奇怪的问题与ASP。Net MVC 4 formcollection用于提交的表单。以下是实际情况: ASP. Net MVC 4项目 我有一个具有多个输入的视图表单。 我在表单上有两个提交按钮,每个按钮都有不同的名称,并且每个按钮都映射到视图控制器中的不同操作(使用HttpParam动作属性)。 我在表单外面有两个Actionlink按钮,带有指向表单内两个提交按钮中的每一个的点击事件。
多页面的配置如下: 在充值中心配置的路由守卫是想在访问 http://localhost:9000/recharge-center/xxx不存在的页面时重定向到充值中心页面,即 http://localhost:9000/recharge-center,但实际上却会重定向到主页,在控制台也可以看到没有进入充值中心的路由守卫钩子函数,而是进入了主页的钩子函数。 主页的路由: 充值中心的路由: 望解答
当路由是user/222/detail时 为什么匹配的params里orderId是222/detail,怎么样只匹配中间那段? user/222后可以有子路径也可以没有
内置了一个组件,想每次打开都用一个新路由打开,但是显示不出来