首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在ASP.NET核心登录重定向中强制returnUrl的绝对uri类型?

在ASP.NET Core登录重定向中,可以通过以下步骤强制returnUrl为绝对URI类型:

  1. 首先,确保在登录页面的表单中有一个名为returnUrl的隐藏字段,用于存储重定向的目标URL。
  2. 在登录方法中,获取returnUrl的值,并检查其是否为绝对URI类型。可以使用Uri.IsWellFormedUriString方法进行验证。
  3. 如果returnUrl不是绝对URI类型,可以使用UrlHelper类的IsLocalUrl方法来判断是否为本地URL。如果是本地URL,则将其转换为绝对URI类型。

以下是一个示例代码:

代码语言:txt
复制
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
    // 验证模型并进行登录逻辑

    if (ModelState.IsValid)
    {
        // 验证用户名和密码

        // 如果验证成功
        if (result.Succeeded)
        {
            // 检查returnUrl是否为绝对URI类型
            if (!Uri.IsWellFormedUriString(returnUrl, UriKind.Absolute))
            {
                // 检查returnUrl是否为本地URL
                if (Url.IsLocalUrl(returnUrl))
                {
                    // 将本地URL转换为绝对URI类型
                    returnUrl = Url.Action("Index", "Home", null, Request.Scheme);
                }
                else
                {
                    returnUrl = null; // 或者设置默认的重定向URL
                }
            }

            return Redirect(returnUrl);
        }
        else
        {
            ModelState.AddModelError("", "无效的用户名或密码");
        }
    }

    return View(model);
}

在上述示例中,我们首先使用Uri.IsWellFormedUriString方法验证returnUrl是否为绝对URI类型。如果不是,我们再使用Url.IsLocalUrl方法判断是否为本地URL。如果是本地URL,我们使用Url.Action方法将其转换为绝对URI类型。最后,使用Redirect方法进行重定向。

这样,无论是绝对URI类型还是本地URL,都可以正确地进行重定向,并确保安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券