Ich möchte meiner Website sehr einfache temporäre Sicherheit hinzufügen.Verwenden von Global.asax, um Sitzungsvariable festzulegen und zu überprüfen (für Benutzertests)
Ich habe eine Seite bei Home/UnderConstruction erstellt, wo Leute, die die Site testen, ein fest codiertes Passwort eingeben können, das dann die Sitzungsvariable "underconstruction" auf "false" setzt.
Das ist, was ich bisher, aber es führt zu viele Umleitungen:
protected void Session_Start(Object sender, EventArgs e)
{
HttpContext.Current.Session["underconstruction"] = "true";
}
protected void Application_AcquireRequestState(Object sender, EventArgs e)
{
if (HttpContext.Current != null && HttpContext.Current.Session != null)
{
var underconstruction = HttpContext.Current.Session["underconstruction"];
if (underconstruction != null)
{
string oc = underconstruction.ToString();
if (oc != "false") Response.Redirect("~/Home/UnderConstruction");
}
}
}
Ist dies nahe, was ich brauchen würde, zu tun?
Hier ist der Code, den wir zur Arbeit bekam:
-Controller-Code für under Ansicht
public ViewResult UnderConstruction()
{
return View();
}
[HttpPost]
public ActionResult UnderConstruction(string ocp)
{
if (ocp == "mypassword")
{
Session["underconstruction"] = "false";
return RedirectToAction("Index", "Home");
}
else
{
Session["beingredirected"] = "false";
return View();
}
}
Global.asax
protected void Session_Start(Object sender, EventArgs e)
{
HttpContext.Current.Session["underconstruction"] = "true";
HttpContext.Current.Session["beingredirected"] = "false";
}
protected void Application_AcquireRequestState(Object sender, EventArgs e)
{
if (HttpContext.Current != null && HttpContext.Current.Session != null)
{
bool uc = false;
var underconstruction = HttpContext.Current.Session["underconstruction"];
if (underconstruction != null)
{
uc = Boolean.Parse(underconstruction.ToString());
}
bool redirected = false;
var beingredirected = HttpContext.Current.Session["beingredirected"];
if (beingredirected != null)
{
redirected = Boolean.Parse(beingredirected.ToString());
}
if (uc && !redirected)
{
if (Request.HttpMethod == "GET")
{
HttpContext.Current.Session["beingredirected"] = "true";
Response.Redirect("~/Home/UnderConstruction");
}
else if (Request.HttpMethod == "POST")
{
}
}
HttpContext.Current.Session["beingredirected"] = "false";
}
}
Haben Sie es versucht? Das ist, wo ich anfangen würde – Tad
Ja, aber wie ich schon sagte, es ergibt sich eine endlose Schleife. Ich bin mir nicht sicher, wie ich das beheben soll. – Dave
Nur ein Gedanke, aber kannst du deine if-Anweisung in 'if (oc ==" true ") ändern, weil du sie nicht trimmst oder unterlegst? – Mightymuke