首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

郁闷死了,登陆有关问题. cookie

2011-12-31 
郁闷死了,登陆问题. cookie辛辛苦苦做了一个web项目,传到服务器上出登陆问题了.大伙帮忙看看有什么问题.谢

郁闷死了,登陆问题. cookie
辛辛苦苦做了一个web项目,传到服务器上出登陆问题了.大伙帮忙看看有什么问题.谢谢

登陆页(Login.aspx):

if   (用户名密码正确)
{
    HttpCookie   user   =   new   HttpCookie( "用户 ",   userbox.Text);
    HttpCookie   name   =   new   HttpCookie( "姓名 ",   table1.Rows[0][0].ToString());
    HttpCookie   other   =   new   HttpCookie( "权限 ",   table.Rows[0][1].ToString());

    user.Expires   =   DateTime.Now.AddMinutes(30);
    name.Expires   =   DateTime.Now.AddMinutes(30);
    other.Expires   =   DateTime.Now.AddMinutes(30);

    Response.AppendCookie(user);
    Response.AppendCookie(name);
    Response.AppendCookie(other);

    Response.Redirect( "index.htm? "   +   userbox.Text,   true);
}

index.htm是一个框架静态页面,用于链接其他数据库操作页面.

数据库操作页的Load事件:

if   (Request.Cookies[ "用户 "].Value   ==   null)
{
      Response.Redirect( "../../Login.aspx ",   true);
}
else
{
    if   (Request.Cookies[ "权限 "].Value   ==   "管理员 ")
    {
          AccessDataSource1.SelectCommand   =   string.Format( "select   *   from   xxx表 ");     //设置GridView1的数据源
          GridView1.AutoGenerateEditButton   =   true;
          GridView1.AutoGenerateDeleteButton   =   true;
    }
}

问题:
通过登陆页面可以正常登陆到index.htm,在index.htm中点击其它数据库操作页的链接,链接可以在框架中正常显示,一直不停的操作也没问题.但是当页面空闲一两分钟以后再点击链接,框架就重定向到Login.aspx了(Request.Cookies[ "用户 "].Value   ==   null),但这个时候不理框架,继续点击链接,框架里页面又可以正常显示了.Cookies的值获取也正常了,但却不能往库里插数据了,重登陆就一切正常.(如果页面空闲还会象上面一样),我调了三天,没头绪啊!!大家帮帮忙看看把.目标是做到空闲不用重登陆.

我   web.Config   的配置:

        <sessionState   timeout= "6000 "   mode= "InProc "   stateNetworkTimeout= "6000 "   cookieless= "false "> </sessionState>
        <anonymousIdentification   cookieless= "UseDeviceProfile "     cookieTimeout= "6000 "/>

[解决办法]
Cookies 有时限啊
[解决办法]
你别用cookie,用session吧
可以设置有效时间,在多久的时间里不操作session就消失
[解决办法]
protected HttpCookie ckie = new HttpCookie( "RelayMange ");

ckie.Values.Add( "userid ", Server.UrlEncode(userSet.Tables[0].Rows[0][ "id "].ToString()));
ckie.Values.Add( "name ", Server.UrlEncode(userSet.Tables[0].Rows[0][ "name "].ToString()));
ckie.Values.Add( "username ", Server.UrlEncode(userSet.Tables[0].Rows[0][ "Name_Login "].ToString()));
ckie.Values.Add( "roleid ", Server.UrlEncode(userSet.Tables[0].Rows[0][ "role_id "].ToString()));
ckie.Values.Add( "rolename ", Server.UrlEncode(userSet.Tables[0].Rows[0][ "rolename "].ToString()));
Response.AppendCookie(ckie);
Response.Redirect( "index.aspx ");


用的时候:
HttpCookie GetCookie = Request.Cookies[ "RelayMange "]; //获得登陆用户的信息


string name = Server.UrlDecode(GetCookie[ "name "]);
string username = Server.UrlDecode(GetCookie[ "username "]);

我的没问题...希望LZ也快快搞定哦...
[解决办法]
Cookies 有时限,用session吧 可以设置有效时间

[解决办法]
cookie 不用设有效时间,页面关掉自动没了
[解决办法]
没错,cookie一般不用设置过期,浏览器关闭就没了.
还有那个6000?是不是6秒?
[解决办法]
没遇见过。是不是跟你的IE有关系。!
我用cookies一直很正常!
[解决办法]
看你的机器的全局设置
[解决办法]
各位不要误导,cookies 和session一样 都可以设置时限的,楼主为什么用中文关键字
[解决办法]
mark下。
[解决办法]
session 和 cookies都可以设置时限
session比较占用服务器资源
[解决办法]
你cookie设置了时间 过了就没了撒
[解决办法]
每个Cookie变量都加一个域名值试,例如 user.Domain= "kimon.cn ";
[解决办法]
cookie 不用设有效时间,页面关掉自动没了
---------------------------------------------
第一次听说cookie“页面关掉自动没了”
[解决办法]
建议LZ改用Session
[解决办法]
感觉是变量名称的问题。楼主用英文的试试。
[解决办法]
应该是cookie超时了。用下面的语法试试
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(0, 40, 0);//参数的意思是小时,分钟,秒。
cookie.Expires = dt.Add(ts);
[解决办法]
楼上很多说要用session,session也离不开cookie,
session使用名为ASP.NET_SessionId的cookie保存SessionID.
[解决办法]
我也遇到了跟楼主差不多的问题,但比你的还要极端,我的干脆是一登录就掉。
我的问题:
http://community.csdn.net/Expert/TopicView3.asp?id=5476992
[解决办法]
服务器的问题!

偶的小站就出了这样的郁闷!!!
[解决办法]
在主框架页里面写一个轮询,告诉服务器,我时时在线,没有轮询,就过期了
[解决办法]
我觉得是不是你浏览器或服务器出问题了 ,换太机器看看, 然后把
user.Expires = DateTime.Now.AddMinutes(30);
name.Expires = DateTime.Now.AddMinutes(30);
other.Expires = DateTime.Now.AddMinutes(30);
去掉,再看看呢.
[解决办法]
关注
[解决办法]
.net里我记得不设置过期的cookie(服务器端设置)是存储在client内存的,不但关掉浏览器会删除掉,就算不关client一般也看不到.
不过我没实际考察过.谢谢指正
[解决办法]
空间内存不够大,session就会丢失,我喜欢cookies,
[解决办法]
用cookie不要设置任何的有效时间,就意味着关闭浏览器,cookie就自动失效。
建议,用cookie记录用户的userid,其他信息使用session记录,当session默认的20分钟过期之后,就使用cookie再从数据库里把数据再次读到session里,这样即安全,也不会出现用户用session20分钟不操作就要重新登陆的问题了 。




ps:如果你做的网站的访问量非常大,请不要使用session
[解决办法]
楼主,我查了一下午资料。自己的问题解决了,感觉我的问题跟你的问题很相似。
我的问题并不是出现在验证代码中,你的问题应该也不是,再怎么改验证代码也没有用。
你检查一下自己的代码,看看在什么地方修改了验证信息cookie。我猜测你是这个问题。
cookie传到服务器端时并没有传递他的过期时间,你检查下Cookies[ "用户 "].Expires,是等于0的。如果你修改了cookie的信息,然后没有设置其Expires,就把它传到客户端,这时这个cookie就失效了。
仔细检查其它地方代码,不要再在验证代码上浪费时间了。
[解决办法]
我感觉LZ的Cookie保存在了服务器。并没有保存在客户端。

登陆

//这里设置产品信息
string ProductInfo= "FTP ";
//设置用户信息
string UserInfo=ftppanelsdr[ "UserName "].ToString().Trim()+ "| "+ftppanelsdr[ "FTPID "].ToString().Trim();

FormsAuthenticationTicket Ticket = null;

Ticket = new FormsAuthenticationTicket(1,UserInfo,DateTime.Now,DateTime.Now.AddHours(50),false,ProductInfo, "/ ");
//加密序列化验证票为字符串
string HashTicket = FormsAuthentication.Encrypt (Ticket) ;
//生成客户端Cookie
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket) ;
//UserCookie.Expires = DateTime.Now.AddHours(8760);

//设置Cookie为浏览器进程
Context.Response.Cookies.Add (UserCookie);
// 重定向到用户申请的初始页面
if(Context.Request[ "ReturnUrl "]!=null)
{
Context.Response.Redirect (Context.Request[ "ReturnUrl "]);
}
else
{
//这里设置要跳转的页面
Context.Response.Redirect ( "ftp/ftp.aspx ") ;
}

获取Cookie里面的值

//获取用户信息
/// <summary>
/// <-- 0--用户ID/1--用户名/2--角色ID/3--等级ID/4--等级名-->
/// 0--用户名/1--FTPID
/// </summary>
/// <returns> </returns>
public static string[] GetUserInfo()
{
return HttpContext.Current.User.Identity.Name.Split( '| ');
}

//获取用户角色
/// <summary>
/// 获取用户角色
/// </summary>
/// <returns> </returns>
public static string GetUserRole()
{
FormsIdentity Id = (FormsIdentity)HttpContext.Current.User.Identity ;
//取得身份验证票
FormsAuthenticationTicket Ticket = Id.Ticket ;
//设置用户角色
return Ticket.UserData;
}
[解决办法]
应该是cookie超时了。用下面的语法试试
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(0, 40, 0);//参数的意思是小时,分钟,秒。
cookie.Expires = dt.Add(ts);
[解决办法]
空闲不用重新登录,session超时丢失,在session_start中取用户登陆保存的永久性cookies重新设置session

热点排行