繁体   English   中英

在C#ASP.NET中的授权

[英]Authorization in c# asp.net

在我的公司中,我们正在开发一个包含许多用户的Web应用程序,所有这些用户都将定义一个或多个角色,为此角色,我们有单独的设置页面,例如

要进一步说明,请参见下图

如果该角色登录后是否能够看到此菜单,则选中左侧的“访问”复选框,因为您可以看到右侧的菜单,当您展开菜单节点时,它将显示该菜单下的子菜单,我们可以进行设置如果他可以执行“添加,删除,编辑,查看以及从菜单隐藏子菜单”的权限

并且我们编写了一个通用类,该类使用此表检查用户角色并给出结果,在每页加载页面时,我们将调用该类并根据结果应用设置。

例如:如果用户登录到母版页,我们会在页面加载时得到结果,并应用这样的设置,

  btnAdd.Enabled = result[0];
  btnEdit.Enabled = result[1];

其中result[0]result[1]是该类的返回值。

现在我的问题是,这是在asp.net中进行授权的正常方式吗?(不仅针对页面,而且针对页面中的控件)

我感觉像在做像btn.Enabled = true这样的草率编码。

既然我已经说完了最后的需求,那么你们都将做什么呢?

问题:

1.如果我以这种方式进行授权会有什么弊端?

2.在asp.net中进行授权以满足我的需要的正确方法是什么(如上所述,我需要启用,禁用控件)

谢谢...

这是非常基本的方法,这样做无害。 在我公司的一个模块中,我们有相同的要求,但我们以不同的方式来完成。 我们是动态生成的。

您应该考虑使用框架的功能。 .NET为您提供基于声明的授权。 您还可以查看其他授权框架,例如XACML(可扩展访问控制标记语言)。

XACML的好处是:

  • 它是标准化的
  • 它是可扩展的
  • 它的政策语言非常灵活。 这意味着它将满足您尚未想到的authZ方案。

我在这里写了一个有关相关主题的较长答案。 看一看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM