A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李朋霏 中级黑马   /  2012-7-21 15:23  /  4680 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个WEB或者 winform程序  怎么判断现在的用户是否登录呢?一般在执行重要的操作的时候提示。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
首先登录后一定是吧用户信息存入一个对象中现在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文件夹下

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
HttpContext.Current.User.Identity.Name
Request.ServerVariables[ "LOGON_USER "].ToString()

我用以上方法得到用户名时,必须是把web站点的匿名访问去掉后,然后当访问站点时出现
登录框后,输入用户名、密码和域名成功登录后,只有这样用上面的两个方法才能得到当前
的用户名。
可我想实现的是不把   web站点的匿名访问去掉,使站点可以匿名访问。当用户开机时选择登录
的域服务器(AD服务器),然后我在程序中用什么方法能得到登录的用户名。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
只要与用户通信的那个socket.receive(byte[] buffer) 没有抛异常,那么用户就处于登录状态; 只要对方断开了连接即退出了程序,就会抛出SocketEception的。但是如果客户端仅仅将与服务器通信的socket对象dispose()掉了,我发现服务端会不停的接收到长度为0的字节流,不停的输出空白行,所以可以在receive之后加一个if进行判断,如果buffer长度为0, 就throw new Exception(),然后被catch到了, 说明用户下线了,当然在客户端发消息的时候应该限制用户不要发空消息。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1,可以给数据库中的用户表建一个falg字段,作为用户是否处于登陆状态的标志位;
2,若flag==1;//表明用户处于登陆状态
3,若flag==0;//表明没有用户登陆

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马