【问题标题】:Authorization in c# asp.netc#asp.net中的授权
【发布时间】:2014-03-20 04:13:18
【问题描述】:

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

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

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

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

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

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

现在我的问题是,这是在asp.net中进行授权的正常方式吗?(不仅适用于页面,还适用于页面中的控件)

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

既然我最后已经告诉了我需要什么,你们会为此做些什么呢?只是想知道。

问题:

1.这样授权会有什么弊端?

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

谢谢...

【问题讨论】:

    标签: c# asp.net class c#-4.0 authorization


    【解决方案1】:

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

    【讨论】:

    • 那么像我们可以在 webconfig 和 all 中定义的东西。你能告诉我你怎么解决这个问题吗? @Dheeraj Yadav
    【解决方案2】:

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

    XACML 的好处在于:

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

    我就相关主题here 写了一个更长的答案。看看那个。

    【讨论】:

    • 对不起,我的回复晚了,你能不能再给我打电话,我是asp.net的新手。我上面所说的方式是使用它的缺点吗?
    猜你喜欢
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多