gpt4 book ai didi

c# - 重定向后 HttpPost 到 ReturnURL

转载 作者:太空狗 更新时间:2023-10-29 20:53:36 27 4
gpt4 key购买 nike

我正在编写一个 ASP.NET MVC 2.0 应用程序,该应用程序要求用户在对商品出价之前先登录。我正在使用 actionfilter 来确保用户已登录,如果没有登录,则将他们发送到登录页面并设置返回 url。下面是我在 Action 过滤器中使用的代码。

if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectResult(String.Concat("~/Account/LogOn","?ReturnUrl=",filterContext.HttpContext.Request.RawUrl));
return;
}

在我的登录 Controller 中,我验证用户凭据然后登录并重定向到返回 url

FormsAuth.SignIn(userName, rememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}

我的问题是,这将始终使用 Get (HttpGet) 请求,而我的原始提交是一个帖子 (HttpPost),并且应该始终是一个帖子。谁能建议一种传递此 URL 的方法,包括 HttpMethod 或任何解决方法以确保使用正确的 HttpMethod?

最佳答案

没有简单的方法可以做到这一点。我建议您将未经身份验证的用户重定向到登录页面,而不是在发布到某个 URL 时,而是在请求将 POST 到经过身份验证的 URL 的表单时。

如果您知道您呈现给未经身份验证的用户的表单将 POST 到站点的经过身份验证的部分,那么请不要向他呈现该表单。当请求此表单时,只需重定向到登录页面进行身份验证,一旦通过身份验证,就重定向到原始表单。这样您将确保只有经过身份验证的用户才能发布到 protected 资源。

就自动 POST 请求(机器人、Web 服务等)而言,向不提供凭据的请求返回一个简单的 401 状态代码应该绰绰有余。

关于c# - 重定向后 HttpPost 到 ReturnURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com