我现在做的网站上面 想要实现一个单点登陆的一个功能·· 一个用户名和密码只能一个人用··比方说我现在用我的用户名登陆上了网站,别人用我的用户名登陆  只会说(对不起,此账号已被人登陆)其次如果我登陆成功的话··就会去第2个页面··如果我把页面都关掉了 ·· 网站上 也判断我下线了·我用时间 判断  总是判断不好·· 我 用Cache 来判断总是判断不好· 我设置在那里是30分钟·· 但如果用户花了5分钟就下线了话  如果想再登陆网站的花 得等25分钟了·希望 有没有更好 的方法···关闭网页了 就说明是下线了··

解决方案 »

  1.   

    这个问题和判断用户是否在线类似。csdn里有很多这样的问题。看看以前的帖子
      

  2.   

    判断Session['username']是否等于你现在输入的用户名,如果等于就提示。
      

  3.   

    你也可以给页面onbeforeunload那里加个ajax函数,confirm出一个对话框然后ajax到后台执行注销函数,只有前台得到了注销的确认才能让其继续执行,超时未得到结果也只能继续关闭ie咯。
      

  4.   

     我 不太想用 session啊·· 我在web.config里面都设置了啊·
      

  5.   

    web。config中用窗口验证吧。定义唯一的一个用户登录。
      

  6.   

    用JS来监控IE的关闭事件,当IE关闭时链接到注销页面。
    function window.onunload()
    {
    if (event.clientX < 0 && event.clientY < 0)
    window.open("./LogOut.aspx","logout","toolbar=no ,scrollbars=no ,resizable=no,top=0,left=0,Width=0,Height=0");
    }
    具体的注销过程在注销页面中实现。
      

  7.   

    建议你用session["username"]来处理,下次登陆的时候判断这个对象是否已经存在
      

  8.   

    那如果用户是突然间 断点了啊·· 那就 不会跳到那个页面了啊·
    ---------------
    怎么样都肯定会有异常,要么你得在你cache类包装一下放个时钟去监控cache,超时就自动移除
      

  9.   

    通过session来判断,枚举session的值,判断该用户是否已经登录
      

  10.   

                    TimeSpan SessTimeOut = new TimeSpan(0, 0, HttpContext.Current.Session.Timeout, 0, 0);                HttpContext.Current.Cache.Insert(str_Key, str_Key, null, DateTime.MaxValue, SessTimeOut, System.Web.Caching.CacheItemPriority.NotRemovable , null);
    能不能有哪位高手告诉我一下 ·· 我上面的代码中哪里是设置时间的·· 我打算把时间设成10分钟
      

  11.   

    用page.user.identity.name来判断 至于page.user.identity.name这个怎么设看我发的另外一个帖子
    http://topic.csdn.net/u/20081030/19/8af30d8e-f16c-449f-9b34-5f5d6e7d9495.html登陆的时候先取一下page.user.identity.name 如果登陆的ID 和这个相同 说明已经登陆直接跳出方法 或者弹个alert提示他
    如果前一个登陆的人下线的话 按照我帖子里设置的方法 不需要你等20分钟 最多5秒 也可以说是马上可以登陆
      

  12.   

    1、用session
    2、可以在数据库中设置一个字段(效率不高)至于掉线了如何判断,你可以用写个timer来控制,每几分钟验证一次,如果服务器在几分钟后发现不在线了,就把他设置为下线状态
      

  13.   

    能不能帮我解释下··HttpContext.Current.Session.Timeout 这个设置默认的时间是多少啊·
      

  14.   

    晕,好像大家都不知道有个application?