使用SPA模板如果用户尚未验证他们的电子邮件,我试图让Login
POST方法返回VerifyEmail
视图。
调试时,您可以看到return View("VerifyEmail")
被调用,但是,我已经回到" /"并且未返回VerifyEmail
视图。
我已经确认视图位于正确的文件夹中视图>帐户。
我应该寻找一些自动路由配置吗?为什么我的视图没有被退回?
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> LogOn(LogOnVM model, string returnUrl)
{
if (!ModelState.IsValid)
return View(model);
switch (await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, true))
{
case SignInStatus.Success:
MyUser user = await UserManager.FindByNameAsync(model.UserName);
if (!await UserManager.IsEmailConfirmedAsync(user.UserName))
return View("VerifyEmail");
else
return RedirectToLocal(returnUrl);
//other cases ignored for brevity
}
}
我尝试添加此功能,但根本没有帮助:
public ActionResult VerifyEmail()
{
return View();
}
我正在搜索并在我的代码中找到它,显然是因为默认模板:
public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context)
{
if (context == null)
throw new ArgumentNullException("context");
if (context.ClientId == _publicClientId)
{
Uri expectedRootUri = new Uri(context.Request.Uri, "/");
if (expectedRootUri.AbsoluteUri == context.RedirectUri)
{
context.Validated();
}
else if (context.ClientId == "web")
{
var expectedUri = new Uri(context.Request.Uri, "/");
context.Validated(expectedUri.AbsoluteUri);
}
}
return Task.FromResult<object>(null);
}
这可能导致问题吗?
答案 0 :(得分:0)
在我上次编辑中评论代码不起作用,但我看到从/ account / logon中删除?ReturnUrl =%2F ?ReturnUrl =%2F可以解决问题。对于LogOn视图,ReturnUrl在routeValues
下传递为@Html.BeginForm
。我想我只是将null
传递给了解决问题的routeValues
!