Asp.net成员资格提供程序在url中显示登录信息
本文关键字:url 显示 信息 登录 程序 成员 net Asp | 更新日期: 2023-09-27 17:50:19
我不知道我做了什么,但现在我的网站显示这个url:
http://localhost:53187/Customer/AccountScreen?UserName=testx&Password=test12345&RememberMe=False&AccountId=5b89d595-ef19-4feb-b95d-bf39672c9ac4
我正在呼叫客户的帐户屏幕,像这样:
return RedirectToAction("AccountScreen", "Customer", model);
我不明白为什么它现在在url中显示这个。在我看来,这确实是一种不好的做法。
有办法防止这种情况吗?
不清楚为什么要将模型传递给RedirectToAction方法。第三个参数用于routeValues。
无论你传递给routeValues参数什么,都会在url中暴露它的属性。只要去掉第三个参数就可以了。如果您需要向AccountScreen传递任何内容,请使用
之类的内容return RedirectToAction("AccountScreen", "Customer", new { id = model.Id });
您可以只包含您感兴趣的值:
return RedirectToAction(
"AccountScreen",
"Customer",
new { AccountId = mode.AccountId }
);
将重定向到http://localhost:53187/Customer/AccountScreen?AccountId=5b89d595-ef19-4feb-b95d-bf39672c9ac4
RedirectToAction方法向浏览器返回一个HTTP 302
响应,导致浏览器向指定的操作发出GET
请求。你看到的是一个用model作为路由值的get请求。HTTP不支持POST重定向,所以你不能改变它。
你能做的-从你的控制器调用方法而不返回到浏览器(如果这是一个相同的控制器):
return AccountScreen(model);
你可以使用TempData来存储你的模型(这也将是GET请求,但模型不会在路由值中传递-它将存储在会话中)。在你的控制器中:
TempData["model"] = model;
return RedirectToAction("AccountScreen", "Customer");
In Customer controller:
public ActionResult AccountScreen()
{
YourModel model = TempData["model"] as YourModel;
//...
}