日期:2014-05-18  浏览次数:20872 次

大家看看我用Session写的登入/登出哪里出问题了。先后n次登入的SessionID是一样的。
C# code


        /// <summary>
        /// 登入
        /// </summary>
        /// <param name="user"></param>
        public static bool Login(CUser user)
        {
            string userID = user.UserID;
            HttpContext.Current.Session.Add("UserID", userID);
            string sessionID = HttpContext.Current.Session.SessionID; //先后n次登入的SessionID是一样的。

            return true;
        }

        /// <summary>
        /// 登出
        /// </summary>
        /// <param name="user"></param>
        public static bool LogOut(CUser user)
        {
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Session.Remove(_Key);

            return true;
        }


------解决方案--------------------
C# code

//获取登陆账号的ID 是这个
object currentUser=HttpContext.Current.Session["UserID"]

------解决方案--------------------
探讨

肿么没人

------解决方案--------------------
探讨
先后n次登入的SessionID是一样的。

------解决方案--------------------
探讨
引用:

引用:
先后n次登入的SessionID是一样的。


为什么应该不一样?有根据吗?
sp哥 我又有一个用户登陆登出的在线管理类 晚些时候贴出来帮忙看看 顶楼的代码是其中的一小部分

还有就是,这种情况是可以允许的吗?sessionid过期不过期是有iis控制的吗?

------解决方案--------------------
调试看看你传进去的userid是不是都一样的
------解决方案--------------------
你登录多个用户,再登出,再登入的,看看sessionid的
------解决方案--------------------
session是和浏览器相关的,你关了再开,session就不一样了。

你要管理登入登出,那在登出的时候清楚session中保存的内容就行了。

session_id对你其实应该是透明的。
------解决方案--------------------
探讨
一个用户用完以后 我想废掉这个sessionid 让每个用户登陆所用的sessionid不一样

------解决方案--------------------
换句话说,只有重启一个浏览器进程,才能得到另外一个Session。
------解决方案--------------------
C# code

直接
 登陆 Session["user"]=user;
 登出 Session["user"]=null;
不就好了吗、session可以存对象的、