要在Winform实现和Asp.net中一样的登陆验证,需要一个变量保存用户的用户名,角色的等相关信息。
在Web开发中这些东东用Session很容易实现,请教在winfrom中该如何实现?

解决方案 »

  1.   

    如果封装一个类似用户信息管理的静态类,当多个用户同时登陆的话是不是会相互影响?
    我现在要实现的是类似与Session的功能,而不是类似与Application的功能!
      

  2.   

    “直接序列化用户对象到本地”?能不能具体一点,最好给个小例子!
    偶以前是搞Asp.Net的,现在突然换成了WinForm,感觉好多东西做着都不顺手。
      

  3.   

    你把全局变量当Session用就可以了
    一个道理
      

  4.   

    webform和winform程序看來還是差距不小,Session是解決webform程序HTTP無狀態問題的方案之一,結果樓主winform程序還在找Session?思維定勢的問題吧!
      

  5.   

    hehe,我也是从webform转来做winform的,搂主我们可以一起研究研究
      

  6.   

    如果是单纯研究技术的话我想可以考虑一下实现,但是我想winform的东西一般是用不着这个类似session的东西的,不要受webform思维定势的影响,不妨说一下在什么情况下需要在winform里用到类似session呢?
      

  7.   

    或者和远航游戏的客户端也行,我总需要一个变量什么的标志用户的身份吧?在asp.net中,可以这样Session["role"]="xxxxx"的。
    在winform里是不是要这样用啊
    public static string role="xxxxxx"
      

  8.   

    using System;
    using System.Collections;
    using System.IO;
    namespace DataAccess.Common
    {
    /// <summary>
    /// Usersave 的摘要说明。
    /// </summary>
    public sealed class Usersave
    {
    public Usersave()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } /// <summary>
    /// 日期:private static Date
    /// </summary>
    private static System.DateTime dDate;
    /// <summary>
    /// 管理员ID:private static int
    /// </summary>
    private static string strId = "";
    /// <summary>
    /// 管理权限
    /// </summary>
    private static string strPower = "";
    /// <summary>
    /// 管理员权限菜单
    /// </summary>
    private static string strMenu="";
    /// <summary>
    /// 班级ID
    /// </summary>
    private static string strClassId = "";
    /// <summary>
    /// 管理员操作类型
    /// </summary>
    private static string strType = "";
    /// <summary>
    /// 机房ID
    /// </summary>
    private static string strRoomId = "";
    /// <summary>
    /// 周次ID
    /// </summary>
    private static int strWeekId = 0;
    /// <summary>
    /// 操作员编号
    /// </summary>
    private static string strCode;
    /// <summary>
    /// 姓名
    /// </summary>
    private static string strName; /// <summary>
    /// 学生卡初始化窗体状态
    /// </summary>
    private static string strState;
    /// <summary>
    /// SQL Server 实例名:private static string
    /// </summary>
    private static string strSqlServerInstance;
    /// <summary>
    /// 数据库名:private static string
    /// </summary>
    private static string strDataBaseName;
    /// <summary>
    ///  SQL Server 数据库管理员sa 的口令
    /// </summary>
    private static string strsaPassword = "";
    /// <summary>
    /// 属性,日期:public static DateTime:get,set
    /// </summary>
    public static System.DateTime DDate
    {
    get
    {
    return dDate;
    }
    set
    {
    dDate = value;
    }
    }
    /// <summary>
    /// 属性,用户ID:public static int;get
    /// </summary>
    public static string Id
    {
    get
    {
    return strId;
    }
    set
    {
    strId = value;
    }
    }
    /// <summary>
    /// 属性,管理员权限
    /// </summary>
    public static string Power
    {
    get
    {
    return strPower;
    }
    set
    {
    strPower = value;
    }
    }
    /// <summary>
    /// 属性,管理员权限菜单
    /// </summary>
    public static string mMenu
    {
    get
    {
    return strMenu;
    }
    set
    {
    strMenu = value;
    }
    } /// <summary>
    /// 属性,班级ID
    /// </summary>
    public static string ClassId
    {
    get
    {
    return strClassId;
    }
    set
    {
    strClassId = value;
    }
    }
    /// <summary>
    /// 管理员操作类型
    /// </summary>
    public static string TypeId
    {
    get
    {
    return strType;
    }
    set
    {
    strType = value;
    }
    }
    /// <summary>
    /// 属性,机房ID
    /// </summary>
    public static string RoomId
    {
    get
    {
    return strRoomId;
    }
    set
    {
    strRoomId = value;//strWeekd
    }
    }
    /// <summary>
    /// 属性,周次ID
    /// </summary>
    public static int WeekId
    {
    get
    {
    return strWeekId;
    }
    set
    {
    strWeekId = value;
    }
    }
    /// <summary>
    /// 属性,用户编号:public static string;get   
    /// </summary>
    public static string Code
    {
    get
    {
    return strCode;
    }
    set
    {
    strCode = value;
    }
    }
    /// <summary>
    /// 属性,用户名:public static string;get
    /// </summary>
    public static string Name
    {
    get
    {
    return strName;
    }
    set
    {
    strName = value;
    }
    } /// <summary>
    /// 学生卡信息初始化窗体状态
    /// </summary>
    public static string State
    {
    get
    {
    return strState;
    }
    set
    {
    strState = value;
    }
    }
    /// <summary>
    /// 只读属性:本地数据库名 
    /// </summary>
    public static string LocalDatabaseName
    {
    get
    {
    return strDataBaseName;
    }
    } /// <summary>
    /// 属性,数据库名:public static long;get
    /// </summary>
    public static string DataBaseName
    {
    get
    {
    return strDataBaseName;
    }
    set
    {
    strDataBaseName = value;
    }
    }
    /// <summary>
    /// 属性,机器名:public static string;get
    /// </summary>
    public static string SQLServerInstance
    {
    get
    {
    return strSqlServerInstance;
    }
    set
    {
    strSqlServerInstance = value;
    }
    }
    /// <summary>
    /// 属性,口令:public static string;get
    /// </summary>
    public static string saPassword
    {
    get
    {
    return strsaPassword;
    }
    set
    {
    strsaPassword = value ;
    }
    }
    }
    }
    这个是我自己保存需要的信息的,用的时候调用赋值就可以了.
      

  9.   

    不懂什么意思?!webForm中,程序执行在Web服务器上,而界面执行在客户机的浏览器上,并且基本Web服务器是无状态的,因此ASP、ASP.Net等复杂而高级的服务机制为客户端维护Session保存状态。Web服务器和数据库服务器或者业务服务器之间,可不是用什么Session来识别Web应用程序的客户身份的,而是直接查询数据库或者查询业务服务器的业务对象。WinForm程序下载并且常驻客户端内存,不需要服务器来执行代码,在客户机器上运行的winForm就相当于在网站上运行的ASP.NET(而不是相当于客户机浏览器)。没有服务器端也就没有什么Session的必要。
      

  10.   

    很多人都是想得到
    "
    像WINFORM全局变量那样稳定的方法来解决ASP.Net的变里保存问题
    "说明WinForm全局变量方面又安全!