我听说:当在浏览器地址栏中输入一个网址访问某个网站时,被访问的网站服务器就会为你这次访问产生一个SessionID。这句话我有几个疑问,请大家帮忙解决,谢谢!!!
1:SessionID是根据什么产生的,是客户端的IP地址还是???
2:访问网站的任何网页面产生的SessionID相同吗?(比如说CSDN的首页和下载页。)
3:如何防止用户重复登录?对于问题3.我做了如下测试:新建网站,网站有两个网页——login.aspx是登录页面,登陆后跳转到target.aspx页面。
target.aspx.cs下有
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session.SessionID.ToString());//显示SessionID值
}
我在vs中浏览login.aspx(记下此时的url地址),登录跳转到target.aspx页面,页面显示SessionID值。
此时,我又开浏览器,用上面记下的url地址访问login.aspx页面,同样跳转到target.aspx页,但是此时的SessionID和上次显示的不一样???(如何防止重复登录?)请高手指点,或者推荐相关网址也可。
谢谢!!!
1:SessionID是根据什么产生的,是客户端的IP地址还是???
2:访问网站的任何网页面产生的SessionID相同吗?(比如说CSDN的首页和下载页。)
3:如何防止用户重复登录?对于问题3.我做了如下测试:新建网站,网站有两个网页——login.aspx是登录页面,登陆后跳转到target.aspx页面。
target.aspx.cs下有
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session.SessionID.ToString());//显示SessionID值
}
我在vs中浏览login.aspx(记下此时的url地址),登录跳转到target.aspx页面,页面显示SessionID值。
此时,我又开浏览器,用上面记下的url地址访问login.aspx页面,同样跳转到target.aspx页,但是此时的SessionID和上次显示的不一样???(如何防止重复登录?)请高手指点,或者推荐相关网址也可。
谢谢!!!
解决方案 »
- 跪求百度,淘宝那种自动匹配(jquery实现)
- 图片路径问题
- 急!!!新闻详细内容无法显示问题
- 登录后返回登录前界面,为什么要点击刷新后才能呈现登录后的效果?
- [100分]紧急求助:LinQ下使用IQueryable<T>如何将返回类型<T>使用匿名类型
- 请教fdspread控件在winform中实现增删该和全选操作?
- 求明白Property 的问题,有了解的进来帮个忙呗~~~~~~~~~~~~~~~~~~~~~~~~~~
- 有用过Infragistics的webchart控件做3D柱状图的嘛?怎么调整图的大小呀?
- 请问如何建立xsd
- 二级域名绑定网站及站各方面间传值问题?
- |zyciis| ASP.NET的页面及时代码,能否实现模版功能(用来做主题功能),可能有点变态,谢谢
- |zyciis| ASP.NET 在什么时候获取他的aspx文件的内容进行处理,如何用一个文本文件替换aspx内容提交给.NET处理 谢谢 急
在创建会话时,服务器会为每一个会话生成一个单独的标识
默认情况下Session是根据cookie里的sessionid来保持的,如果没有写cookie,那每次刷新页面它就认为是新的session了
没有打开的cookie的用户如何处理? 不要求强制登录访问
==
服务器给客户端创建的唯一id2:访问网站的任何网页面产生的SessionID相同吗?(比如说CSDN的首页和下载页。)
==
当用户登录后(如果网站使用了Session),对同一用户而言SessionID相同3:如何防止用户重复登录?
==
SessionID默认是和浏览器同一进程的,关闭浏览器后再开浏览器,两次SessionID不同
这时session还没消失,在登录代码里里判断一下是否存在即可
同一台机? 可能是同一个session_id吧
9成没有这个可能,不管是B/S还是C/S,服务器都得考虑这个用户有没有登录,那是服务器的工作,不可能交给客户端。
那这样Session只能用来传值了?
单点登录刚才看了一下,好像有点复杂。以后再来攻克!!!
c/s可以?那c/s岂不是很恐怖。
不过c/s确实恐怖,可以“爆头”嘛!!!
嘿嘿!
是asp.net吧???呵呵!
但是我没有退出浏览器啊,我只是重新开了一个,并且一个是ie,一个firefox。
b/s传播病毒,c/s执行病毒。 前者不一定爆头,后者一定爆头
生成两个也正常,反正它们cookie都放在不同的文件夹,不会冲突,浏览器之间也通不了气,但在同一个浏览器里就不能同时登录了。
还是B/S好啊!
asp.net只有在你实际使用到了Session集合时才会向客户端真正写出标记SessionID的cookie。例如你随便写一行if(!IsPostback)
Session["aaa"]=true;胡乱写的,仅仅需要在第一次访问服务器时使用一次Session集合,你就会发现SessionID不再变化了。
这机制都能摸出来膜拜。。
1. 用户登录成功后,将用户登录信息存放到Hashtable类型的Application["users"]里面,其键值为SessionID,其Value值为用户ID;
2. 当用户注销时,调用Session.Abandon;
3. 在Global.asax里面的SessionEnd事件中,将用户ID从Hashtable中删除;在用户访问页面时,察看Hashtable中是否有对应的用户ID如果没有则判断用户不在线(用户不在线的原因可能是按了注销按钮、网页超时等)
1. 公用类中判断用户是否在线的函数(供用户调用)
2. 处理用户登录事件,在里面调用判断用户是否登录的函数,并将相关信息保存到Session中去,在将Seesion保存到Application中去。
3. 接着就需要在Session销毁或者浏览器关闭的时候,进行处理Session中的数据,也就是将数据从Session中移除。
4. 而最后就是在页面刷新的时候进行判断就可以了。
{ } void Session_End(object sender, EventArgs e)
{ }
个人想法是在数据库中弄个记录用户是否登录的字段,在Session_Start事件里面UPdate用户状态为登录,在Session_End里面UPdate用户状态为离线。用户没每次登陆的时候都先判断下他的状态时不是登录中、、个人浅见,不知道有没有用,楼主仅供参考。
2:访问网站的任何网页面产生的SessionID相同吗?(比如说CSDN的首页和下载页。)SessionID是在临时Cookie里保存着,浏览器关闭时释放Cookie,Session在服务器端等超时了以后自动释放一个会话就一个Session。浏览器打开后,只要两次操作在Session的生存周期内,并且是同一个站点,系统默认的就是一个Session(除非你程序释放),CSDN首页和下载站里,如果他们是完全独立的两个服务器,将会是不同的Session,因为Session在服务器内存里存着,
3:如何防止用户重复登录?
你可以在Application里用用户名建一个标识,不过你得想法解决关闭浏览器,或断电后注销用户的问题