加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 重定向后HttpPost到ReturnURL

发布时间:2020-12-15 18:35:41 所属栏目:百科 来源:网络整理
导读:我正在编写一个ASP.NET MVC 2.0应用程序,该应用程序要求用户在对项目进行投标之前登录.我正在使用actionfilter来确保用户已登录,如果没有,则将它们发送到登录页面并设置返回URL.下面是我在动作过滤器中使用的代码. if (!filterContext.HttpContext.User.Iden
我正在编写一个ASP.NET MVC 2.0应用程序,该应用程序要求用户在对项目进行投标之前登录.我正在使用actionfilter来确保用户已登录,如果没有,则将它们发送到登录页面并设置返回URL.下面是我在动作过滤器中使用的代码.
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
    filterContext.Result = new RedirectResult(String.Concat("~/Account/LogOn","?ReturnUrl=",filterContext.HttpContext.Request.RawUrl));
    return;
}

在我的登录控制器中,我验证用户凭据,然后将其签名并重定向到返回URL

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

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

解决方法

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

如果您知道您向未经身份验证的用户提交的表单将POST到网站的经过身份验证的部分,那么请不要向他提供表单.请求此表单时,只需重定向到登录页面进行身份验证,并在经过身份验证后重定向到原始表单.这样,您将确保只有经过身份验证的用户才能POST到受保护资源.

就自动POST请求而言(机器人,Web服务……)将简单的401状态代码返回给不提供凭证的请求应该绰绰有余.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读