我还维护了一个 winforms 桌面应用程序,它为办公室用户使用活动目录并支持非办公室用户。
这可能比你的要求要多,但因为我和你有相同的场景,所以无论如何我都会提供它,因为它以一种很好的方式组合在一起,我真的没有写太多代码并且一直运作良好。
我敢肯定,其他人可能会用一个包裹而不是自己滚动来做到这一点——老实说,下次我有这个要求时,我可能会走那条路……
这里是:
从概念上讲,我从 ASP.NET 中得到启发,并将安全性分为两个逻辑部分:
身份验证- 这个用户是谁?
授权- 用户可以这样做吗?
我的实现使用了一个简单的数据库:
这是我的应用程序主要形式的一个片段:
public EOMForm()
{
InitializeComponent();
// Show the connection string when hovering over the database label (Test Mode Only)
if(Properties.Settings.Default.TestMode)
this.toolTip1.SetToolTip(this.databaseLabel, EomAppCommon.EomAppSettings.ConnStr);
// Security
DisableMenus();
}
private void DisableMenus()
{
// Disable individual menu items
foreach (var menuItem in this.TaggedToolStripMenuItems())
menuItem.Enabled = Security.User.Current.CanDoMenuItem((string)menuItem.Tag);
// Apply disabled color to top level menus that have all their items disabled
foreach (var menu in menuStrip1.DisabledMenus())
menu.ForeColor = SystemColors.GrayText;
}
这是支持的实用程序代码。
最后,我使用 ASP.NET 脚手架站点对其进行管理: