资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Winform开发框架中怎么实现系统登录

Winform开发框架中怎么实现系统登录,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

成都创新互联公司是专业的江岸网站建设公司,江岸接单;提供网站制作、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行江岸网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

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

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

1、系统重新登录实现

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

Winform开发框架中怎么实现系统登录

Winform开发框架中怎么实现系统登录

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

Winform开发框架中怎么实现系统登录

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

///   /// 初始化用户相关的系统信息  ///   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就是判断用户有哪些权限的函数,根据权限系统获取到的功能点,在这里对界面元素进行重新刷新,有权限的就显示,没有的就隐藏即可,如下所示。

///   /// 根据权限屏蔽功能  ///   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);      }  }
///           /// 使用参数化登录          ///           ///           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 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开发框架中怎么实现系统登录

以上就是Winform开发框架中对于系统重新登录以及系统自动登录(命令行登录)的思想思路及方式。

看完上述内容,你们掌握Winform开发框架中怎么实现系统登录的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


名称栏目:Winform开发框架中怎么实现系统登录
网站URL:http://cdkjz.cn/article/pgcgop.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220