创建和删除Cookie不太合适?

时间:2011-10-06 11:24:08

标签: c# asp.net-mvc

我正在尝试创建一个自定义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;
        }
    }
}

2 个答案:

答案 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; }
}