黑马程序员技术交流社区

标题: 怎么判断用户是否处于登录状态 [打印本页]

作者: 李朋霏    时间: 2012-7-21 15:23
标题: 怎么判断用户是否处于登录状态
一个WEB或者 winform程序  怎么判断现在的用户是否登录呢?一般在执行重要的操作的时候提示。
作者: 刘建素    时间: 2012-7-21 15:33
首先登录后一定是吧用户信息存入一个对象中现在web用的较多为profile 和session  你可以建一个pagebase类 然后pagebase 继承 System.web.UI.Page
在pagebase中对用户是否登录进行判断
if (Biz.Common.SystemConfig.Admin.OID_T001 == 0)
        {
            Response.Clear();
            Response.Write("<script language=javascript>window.alert('您没有权限进入本页!\\n请登录或与管理员联系!');top.location.href='Login.aspx';</script>");
            Response.End();
        }

然后其他aspx页面继承 pagebase即可
public partial class AD_AllianceCate_List : PageBase
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            
        }
    }}

pagebase 我习惯放在web站点下得App_Code文件夹下
作者: 王超    时间: 2012-7-21 15:53
HttpContext.Current.User.Identity.Name
Request.ServerVariables[ "LOGON_USER "].ToString()

我用以上方法得到用户名时,必须是把web站点的匿名访问去掉后,然后当访问站点时出现
登录框后,输入用户名、密码和域名成功登录后,只有这样用上面的两个方法才能得到当前
的用户名。
可我想实现的是不把   web站点的匿名访问去掉,使站点可以匿名访问。当用户开机时选择登录
的域服务器(AD服务器),然后我在程序中用什么方法能得到登录的用户名。
作者: 黑马李果    时间: 2012-7-26 14:20
只要与用户通信的那个socket.receive(byte[] buffer) 没有抛异常,那么用户就处于登录状态; 只要对方断开了连接即退出了程序,就会抛出SocketEception的。但是如果客户端仅仅将与服务器通信的socket对象dispose()掉了,我发现服务端会不停的接收到长度为0的字节流,不停的输出空白行,所以可以在receive之后加一个if进行判断,如果buffer长度为0, 就throw new Exception(),然后被catch到了, 说明用户下线了,当然在客户端发消息的时候应该限制用户不要发空消息。
作者: 许庭洲    时间: 2012-7-26 14:32
1,可以给数据库中的用户表建一个falg字段,作为用户是否处于登陆状态的标志位;
2,若flag==1;//表明用户处于登陆状态
3,若flag==0;//表明没有用户登陆




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2