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中显示这个。在我看来,这确实是一种不好的做法。

有办法防止这种情况吗?

Asp.net成员资格提供程序在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;
    //...
}