Winform开发框架之系统登录实现

在业务系统的操作过程中,有时候,用户需要切换用户进行重新登录,这种情况有时候是因为一个人管理多个用户账号,希望通过不同的账号登录进行管理不同的资料,另一种情况是酒店的换班操作,另一个人接替前面的人进行系统维护管理。这种重新登录其实也是一种友好的操作之一,试想一下,换个账号登录,就需要推出系统,重新寻找运行程序才可以,而且如果系统启动较慢一点的,还需要等待,所以实现重新登录,有时候也是必要的。因此实现这个功能,也是体现我们开发的系统注重细节的表现。

另外,自动登录(其实是接受通过命令行参数进行登录)也是很常见的,有时候,让客户端记住用户的账号密码,我们在后台通过调动命令行方式进行登录,让系统程序接收到相关的参数值即可进行登录了。

1、系统重新登录实现

大致的思路,就是登录系统后,在系统菜单中有一项重新登录的功能入口,单击可以要求客户重新输入密码进行登录,如下所示。





代码实现就是通过把初始化的时候,用户相关的操作放到一个函数里面,保证重新执行这个函数操作就能重新刷新登录用户信息即可。如下所示。


在InitUserRelated函数里面,我们把用户相关的初始化操作放在里面,其中包括显示登录用户信息、用户可操作按钮或者菜单、首页信息等相关项目,代码如下所示。

/// <summary>  
/// 初始化用户相关的系统信息  
/// </summary>  
private void InitUserRelated()  
{  
    ChildWinManagement.LoadMdiForm(this, typeof(FirstPage));//欢迎页面  
 
    #region 初始化系统名称  
    try 
    {  
        string Manufacturer = config.AppConfigGet("Manufacturer");  
        string ApplicationName = config.AppConfigGet("ApplicationName");  
        string AppWholeName = string.Format("{0}-{1}    ", Manufacturer, ApplicationName);  
        Portal.gc.gAppUnit = Manufacturer;  
        Portal.gc.gAppMsgboxTitle = AppWholeName;  
        Portal.gc.gAppWholeName = AppWholeName;  
 
        this.Text = AppWholeName + "      ";  
        this.notifyIcon1.BalloonTipText = AppWholeName;  
        this.notifyIcon1.BalloonTipTitle = AppWholeName;  
        this.notifyIcon1.Text = AppWholeName;  
 
        string userName = Portal.gc.LoginInfo.RealName;  
        if (string.IsNullOrEmpty(userName))  
        {  
            userName = Portal.gc.LoginInfo.Name;  
        }  
        UserStatus = string.Format("当前用户:{0}({1})", userName, Portal.gc.RoleInfo.RoleName);  
        CommandStatus = string.Format("欢迎使用 {0}", Portal.gc.gAppWholeName);  
    }  
    catch { }  
 
    #endregion  
 
    InitAuthorizedUI();//根据权限屏蔽  
 
    InitSkinGallery();  
    UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue");  
} 

其中InitAuthorizedUI就是判断用户有哪些权限的函数,根据权限系统获取到的功能点,在这里对界面元素进行重新刷新,有权限的就显示,没有的就隐藏即可,如下所示。

/// <summary>  
/// 根据权限屏蔽功能  
/// </summary>  
private void InitAuthorizedUI()  
{  
    this.tool_Report.Enabled = Portal.gc.HasFunction("Report");  
    this.tool_Dict.Enabled = Portal.gc.HasFunction("Dictionary");  
    this.tool_ItemDetail.Enabled = Portal.gc.HasFunction("ItemDetail");  
    this.tool_Purchase.Enabled = Portal.gc.HasFunction("Purchase");  
    this.tool_StockSearch.Enabled = Portal.gc.HasFunction("StockSearch");  
    this.tool_TakeOut.Enabled = Portal.gc.HasFunction("TakeOut");  
    this.tool_WareHouse.Enabled = Portal.gc.HasFunction("WareHouse");  
    //this.menu_run_systemLog.Enabled = Portal.gc.HasFunction("LoginLog");  
    this.tool_Settings.Enabled = Portal.gc.HasFunction("Parameters");  
    this.tool_MonthlyStatistic.Enabled = Portal.gc.HasFunction("MonthlyStatistic");  
    this.tool_AnnualStatistic.Enabled = Portal.gc.HasFunction("AnnualStatistic");  
    this.tool_ClearAll.Enabled = Portal.gc.HasFunction("ClearAllData");  
    this.tool_ImportItemDetail.Enabled = Portal.gc.HasFunction("ImportItemDetail");  
} 

这样封装好后,我们需要重新登录就方便了,我们在重新登录的菜单操作里面,实现代码如下所示。

private void btnRelogin_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)  
{  
    if (MessageDxUtil.ShowYesNoAndWarning("您确定需要重新登录吗?") != DialogResult.Yes)  
        return;  
 
 
    Portal.gc.MainDialog.Hide();  
 
    Login dlg = new Login();  
    dlg.StartPosition = FormStartPosition.CenterScreen;  
    if (DialogResult.OK == dlg.ShowDialog())  
    {  
        if (dlg.bLogin)  
        {  
            CloseAllDocuments();  
            InitUserRelated();  
        }  
 
    }  
    dlg.Dispose();  
    Portal.gc.MainDialog.Show();  
} 

实现上面的操作过程,基本上就完成了重新登录的操作了。

2、系统自动登录实现

系统自动登录有时候很必要,在用户自己绝对信任的电脑上,自动登录对用户来说,很方便友好的,君不见,QQ如此、旺旺如此等等。其实实现思路就是通过给exe执行文件传递登录参数即可,必要时登录的参数值还可以进行加密,给第三方进行运行调用,以前就做过一个在Web上自动启动桌面程序Visio应用软件的操作,其实原理就是一样,通过传递参数给执行文件实现的。

[STAThread]  
static void Main(string[] args)  
{  
    Application.EnableVisualStyles();  
    Application.SetCompatibleTextRenderingDefault(false);  
 
    if (args.Length > 0)  
    {  
        LoginByArgs(args);  
    }  
    else 
    {  
        LoginNormal(args);  
    }  
} 
/// <summary>  
        /// 使用参数化登录  
        /// </summary>  
        /// <param name="args"></param>  
        private static void LoginByArgs(string[] args)  
        {  
            CommandArgs commandArgs = CommandLine.Parse(args);  
            if (commandArgs.ArgPairs.Count > 0)  
            {  
                #region 获取用户参数  
                string userName = string.Empty;  
                string identity = string.Empty;  
                foreach (KeyValuePair<string, string> pair in commandArgs.ArgPairs)  
                {  
                    if ("U".Equals(pair.Key, StringComparison.OrdinalIgnoreCase))  
                    {  
                        userName = pair.Value;  
                    }  
                    if ("P".Equals(pair.Key, StringComparison.OrdinalIgnoreCase))  
                    {  
                        identity = pair.Value;  
                    }  
                }   
                #endregion  
 
                if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(identity))  
                {  
                    bool bLogin = Portal.gc.LoginByIdentity(userName.Trim(), identity);  
                    if (bLogin)  
                    {  
                        ShowMainDialog();  
                    }  
                    else 
                    {  
                        LoginNormal(args);  
                    }  
                }  
            }  
        } 

有时候,即使觉得用户不需要通过命令行登录,那么我们自己为了避免开发过程中,启动程序时候,总是需要输入用户账号密码的问题,也可以使用模拟自动登录的方式解决。

我们只需要在项目的属性里面输入内置的用户名密码,这样我们测试起来就不用登录那么麻烦了。


以上就是Winform开发框架中对于系统重新登录以及系统自动登录(命令行登录)的思想思路及方式,欢迎大家提供更好的思路及技巧,或者进行探讨,谢谢支持。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
管理系统,作为一种高效的企业运营管理工具,旨在通过集成化、系统化的手段,对组织内部的各类资源进行规划、协调、控制和优化,以实现企业战略目标,提升运营效率,增强核心竞争力。以下是对管理系统的详细介绍: 一、定义与构成 管理系统是指由硬件设备、软件应用、数据资源、人员以及相关管理制度共同构建的,用于处理、监控、分析和决策各类业务活动的综合信息系统。它通常包括以下几个核心组成部分: 数据采集模块:负责从各类业务环节中实时、准确地收集信息,形成企业的基础数据资源。 数据分析模块:运用统计学、人工智能等技术对数据进行深度挖掘和智能分析,提供决策支持。 业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬福利等人力资源全流程管理,提升人才效能。 客户关系管理系统(CRM):集中管理客户信息,优化销售、营销和服务流程,提升客户满意度和忠诚度。 供应链管理系统(SCM):整合供应商、制造商、分销商、零售商等供应链各环节,实现物流、资金流、信息流的协同运作。 企业资源计划系统(ERP):对企业内部财务、生产、采购、库存、销售等各项资源进行全面集成管理,提高整体运营效率。 项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。 三、价值与优势 提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。 优化决策:实时数据分析与预测,提供精准的决策依据,助力管理层做出明智选择。 资源整合:打破部门壁垒,实现信息共享,优化资源配置,降低运营成本。 合规风控:内置法规遵循机制,强化内部控制,降低经营风险。 持续改进:通过对系统数据的持续监控与分析,驱动业务流程持续优化,促进企业创新与发展。 总的来说,管理系统作为现代企业管理的重要工具,以其强大的数据处理能力、智能化的决策支持和高效的业务流程管理,有力推动了企业的数字化转型,助力企业在日益激烈的市场竞争中保持竞争优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值