2011-03-09 61 views
0

大家好。我是第四年的大学生,我是新来的asp,我目前正在为我的OJT开发一个网站。我为我的网站创建了一个登录表单,现在我对如何处理这个问题感到困惑。我需要确定用户是否已经登录或注销.. 由于用户输入了确切的用户名和密码,它将转到这行代码中,如果用户有蜜蜂注销,它将标识。确定用户是否登录或注销

 HttpCookie cookie = new HttpCookie("isLog"); 
     cookie.Value = "1"; 
     DateTime dtNow = DateTime.Now; 
     TimeSpan tsMinute = new TimeSpan(1, 1, 0, 0); 
     cookie.Expires = dtNow + tsMinute; 
     Response.Cookies.Add(cookie); 

     Response.Redirect("manageService.aspx"); 

而且我有这个功能来确定用户是否已经登录或注销..

protected Boolean isLog() 
{ 
    //String strCookieName = Request.QueryString["cookie"].ToString(); 
    //Grab the cookie 
    HttpCookie cookie = Request.Cookies["isLog"]; 
    String tmp = cookie.Value.ToString(); 
    return (tmp != null); 
} 

现在,我在这里的问题是,即使我输入正确的用户名和密码重新加载页面后,它仍然会询问用户名和密码(将我发送到登录页面)。我已经为“isLog”cookie设置了一个值,但它仍然返回一个错误的信息。 请赐教这个东西..谢谢你这么多..

任何帮助,高度赞赏,

-nonon

+0

你为什么不使用内置的成员?然后就像'User.Identity.IsAuthenticated'一样简单' – balexandre 2011-03-09 08:27:15

回答

0

的问题是,当你得到的cookie值

cookie.Value.ToString() 

你总是得到一个字符串参考,所以tmp永远不会为空。

你应该做的是要么返回(tmp == "1")

.Value是一个字符串属性(它返回一个字符串),所以你不必的ToString()它。

另外请注意,如果cookie不存在,Request.Cookies [“COOKIETHATDOESNTEXIST”]不会抛出异常。然而,调用不存在的.Value属性将抛出异常。

先尝试或者只是简单的检查空:

HttpCookie cookie = Request.Cookies["isLog"]; 

bool isLoggedIn = false; 
if(cookie != null && cookie.Value == "1") 
{ 
    isLoggedIn = true; 
} 
return isLoggedIn; 
+0

哎呀!谢谢The_Butcher。 :-) – Nonon 2011-03-11 04:19:50

+0

酷np!如果这是正确的答案,只需点击此问题旁边的勾号即可 – 2011-03-11 08:02:51

相关问题