public ActionResult SingInUp(string email_add)
{
bool obj = db.tblUsers.Any(x => x.email_add.Equals(email_add));
if (obj)
{
tblUser user = db.tblUsers.Single(x => x.email_add == email_add);
Session["email_add"] = user.email_add;
Session["fname"] = user.fname;
Session["lname"] = user.lname;
return Json(new { result = "Redirect", Url = Url.Action("Check", "ProjectV3") });
}
else
{
return Json(new { result = "SingUp", Urls = Url.Action("SignUp", "ProjectV3", new { email_add = email_add}) });
}
}
大家好我是mvc5 c#的新手,我在反击这个问题我想要隐藏我的url参数。任何可以帮助我感谢你提前
这是我的代码:
constructor(props) {
super(props);
...
this.state = {
calls: List(),
};
}
答案 0 :(得分:1)
除非您想要使用POST而不是URL参数,否则您会被卡住。如果您只想隐藏一些实现细节,可以对参数进行编码以模糊其含义。
return Json(new { result = "SingUp", Urls = Url.Action("SignUp", "ProjectV3", new { email_add = Base64Encode(email_add)}) })
...
public static string Base64Encode(string plainText) {
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
您最终会得到以下网址:http://localhost:1126/ProjectV3/SignUp?email_add=cGtleWJpcmQ5NUBnbWFpbC5jb20=。您显然可以更改参数的名称以隐藏其意图。
答案 1 :(得分:0)
如果您想有效地隐藏客户端Url中的内容,您需要找到一种方法来屏蔽它,或者将其存储在服务器上的某个位置,以便在下一次请求时捕获。
有很多地方可以将这些数据存储在您的服务器上,但实际上显而易见的是。
Cookies
TempData
现在TempData
似乎是明显的选择,因为它会在请求中持续存在,并在访问时从TempData
清除。这也是它的垮台,假设您在TempData
方法中设置了SingUpIn
,然后返回我假设的JsonResul
然后通过JavaScript用于重定向。然后,您重定向到此页面,然后提取随后删除的TempData
字典的值。因此,如果此人最终在SingUp
页面上,并且出于某些原因决定刷新页面,则TempData
中的值将不会再次找到。
现在可以通过在每次读取时重置TempData属性来处理。所以基本上你读了TempData
项,然后重新分配TempData
条目。
这是一些非常基本的代码[基本上]有效,并且不会在网址中显示电子邮件。
public ActionResult SignUpIn(string email_acct)
{
//pretend i tested for a real user
TempData["email_acct"] = email_acct;
var r = new { result = "SingUp", Urls = Url.Action("SingUp") };
return Json(r);
}
public ActionResult SingUp()
{
if (!TempData.ContainsKey("email_acct"))
{
//no temp data email.. maybe redirect.. who knows!!
return RedirectToAction("Index");
}
//read the temp data entry..
string emailAcct = TempData["email_acct"].ToString();
//reset the temp data entry
TempData["email_acct"] = emailAcct;
return View(new SingUpModel { EmailAccount = emailAcct });
}