Asp.net 动态用户和基于 activity 的授权混合隐藏显示站点主 html

Asp.net dynamic User and activity based authorisation mixed with hide show site master html

我无法为我的 ASP.NET Web 表单站点找到基于用户和 activity 授权的良好示例。目前,我在网络配置中使用用户角色 allow/deny 访问文件夹中的页面。但这种方法被证明是维护起来的噩梦,尤其是当用户提出特殊情况时,完全偏离现有角色权限。

所以我正在寻找一种能够从数据库中存储和检索用户访问权限的方法,然后在我的网站上动态地执行这些权限。

我的第二个问题是如何从某些用户show/hide某些站点管理员html。我也在考虑将这些信息存储在数据库中,以便这些权限也可以动态分配。 目前,我在 hide/show 权限后面的站点主代码中硬编码,说:

If(isInRole("Admin"){
// Show Everything
}
else
{
// hide certain html
}

所以这种方法目前有效,但维护起来有问题,而且不太灵活。

最后,我正在研究基于 activity 的授权,其优缺点在这篇文章中有详细描述:http://ryankirkman.com/2013/01/31/activity-based-authorization.html。 那么我将如何在我的 ASP.NET 网络表单站点中实现它?

总而言之,我追求三件事:

  1. 根据用户授权动态控制 HTML 元素在我的站点母版页中的可见性。
  2. 动态控制用户对我的 aspx 页面的授权
  3. 动态控制用户 activity 基于授权

如有任何意见,我们将不胜感激。谢谢

勾选这个linkAuthorization Based on User

或者您可以做的另一件事是,根据角色分离关注点

根据访问级别和角色保留视图,以便您轻松管理访问。

我见过人们做的另一件事是拥有一个包含所有 Roles/Users 和访问链接

的数据库 table

您应该从基于角色的身份验证切换到基于声明的身份验证。这是一篇描述基于声明的身份验证基础知识的文章:

http://dotnetcodr.com/2013/02/11/introduction-to-claims-based-security-in-net4-5-with-c-part-1/

声明将使您能够对每个用户的权利进行细粒度控制。 ClaimsPrincipal 也可以在网络表单中使用:

https://visualstudiomagazine.com/articles/2013/09/01/going-beyond-usernames-and-roles.aspx

属性可以应用于 ASP.NET Web 窗体应用程序中的页面和方法(如上文所述):

[ClaimsPrincipalPermission(SecurityAction.Demand, 
  Operation="Update", Resource="Customer")]
public partial class CustomerUpdate : System.Web.UI.Page
{