【问题标题】:Asp.Net Core Spa, how to redirect after successful ConfirmEmailAsp.Net Core Spa,ConfirmEmail成功后如何重定向
【发布时间】:2020-05-06 17:51:33
【问题描述】:

有一个 Aps.Net Core spa (Angular) 应用程序,并希望在成功的电子邮件确认和登录后重定向到页面。如何实现这一点(在 Identity/Pages/Account/ConfirmEmail.chtml.cs 代码中)。

        ...
        var user = await _userManager.FindByIdAsync(userId);
        if (user == null)
        {
            return NotFound($"Unable to load user with ID '{userId}'.");
        }

        code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
        var result = await _userManager.ConfirmEmailAsync(user, code);

        if (result.Succeeded)
        {
            await _signInManager.SignInAsync(user, false, null);
            return RedirectToPage("/"); // THIS DOES NOT WORK... AREA PROBLEM?
        }
        ...

上面代码中的 RedirectToPage 产生异常:InvalidOperationException: 没有名为 '/' 的页面与提供的值匹配。也许“区域”和登录相关?

【问题讨论】:

    标签: asp.net-core single-page-application


    【解决方案1】:

    在 ConfirmEmail.chtml 文件中结合 JavaScript 解决了这个问题。在 ConfirmEmail.chtml.cs 我添加了:

    var result = await _userManager.ConfirmEmailAsync(user, code); 
    if (result.Succeeded)
    {
        await _signInManager.SignInAsync(user, false, null);
        ViewData["Redirect"] = "/";
    }
    

    在 ConfirmEmail.chtml 中,我在文件末尾添加了以下更改:

    @if (ViewData["Redirect"] != null)
    {
      <text>
        <script>
            window.location.href = '@ViewData["Redirect"]';
        </script>
      </text>
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      相关资源
      最近更新 更多