我正在尝试创建一个自定义Validation类,用于登录和注销用户。然而。 当我退出时,Verafy Bool不会返回false。 (不删除cookie)
我做错了什么?我有什么不同的做法吗?
希望你能帮忙!
public static class Security
{
private static HttpCookie cookie = HttpContext.Current.Request.Cookies["Login"];
//Tells weather you are logged in or not
public static bool Verafy {
get
{
if (cookie != null)
return true;
else
return false;
}
}
//Removes cookie, (doesn't work!)
public static void signOut()
{
cookie = new HttpCookie("Login");
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookie);
}
//Creates a cookie for x days.
public static void SignIn(int Days)
{
cookie = new HttpCookie("Login");
cookie.Name = "Login";
cookie.Expires.AddDays(Days);
HttpContext.Current.Response.Cookies.Add(cookie);
}
//This is just temporarily..
public static bool VerafyUser(string Username, string Password)
{
if (Username == "123" && Password == "123")
{
return true;
}
else
{
return false;
}
}
}
答案 0 :(得分:1)
这里有你的cookie静态字段,所以它将在你的应用的所有用户之间共享,伙计!如果其他人在您离开应用程序后登录,则会恢复cookie。
阅读文章http://mikehadlow.blogspot.com/2008/03/forms-authentication-with-mvc-framework.html。应该有所帮助。
答案 1 :(得分:0)
我认为您通过为cookie存储静态变量采取了错误的方法。由于您从未将引用设置为null,因此您的属性将永远不会返回false。
摆脱静态字段并让您的属性实际检查cookie是否存在,例如
public bool LoggedIn
{
get { return HttpContext.Current.Request.Cookies["Login"] != null; }
}