如果我尝试访问一个具有检查身份验证过滤器的网页,那么当我浏览匿名时,它会重定向到登录页面。因此,URL可能如下所示:我可以在GET请求上访问querystring变量,但不能访问POST
www.example.com/user/login?ReturnUrl=/user/settings
我的登录操作有两种方法,分别是GET和POST请求类型。
[AcceptVerbs("GET")
public ActionResult Login()
{
}
[AcceptVerbs("POST")
public ActionResult Login(FormCollection f)
{
}
下面的代码是GET和POST登录操作:
string redirectUrl = "";
if(Request.QueryString["ReturnUrl"] != null)
{
redirectUrl = Request.QueryString["ReturnUrl"];
}
在调试模式下,该变量被正确的GET动作初始化,但在POST操作它只是跳过该调用,这意味着它是NULL。
这是为什么? ReturnUrl在url中仍然可见?
我无法重新创建此行为。你的表单动作url *包含了返回url,对吗? – 2010-02-02 20:05:12
不,它没有,表格发布到/用户/登录 – Blankman 2010-02-02 20:14:16
那么这就是你的问题!你需要它发布到完整的网址,包括查询字符串,例如。 <形式行动=“/用户/密码RETURNURL = /用户/设置?”方法=“邮报”> – 2010-02-02 20:16:59