【问题标题】:Dynamic directory authorisation asp.net动态目录授权 asp.net
【发布时间】:2013-04-11 17:10:27
【问题描述】:

我的网站正在对用户和角色使用表单身份验证。 我使用小型 web.config 文件来拒绝/允许特定用户或角色访问目录。

这些文件看起来类似于:

<?xml version="1.0"?>
<configuration>
    <system.web>

      <authorization>
        <allow roles="Admins, Coaches, Athletes"/>
        <deny users="*, ?"/>
      </authorization>

    </system.web>
</configuration>

以上工作。

我的网站有两组用户;运动员和教练员。哪个用户是哪个运动员的教练员的配置在数据库中完成。

我现在需要创建以下内容: 我的网站将生成运动员特定的报告。这些报告应该只对指定的运动员可见,也对他/她的教练可见。每个运动员都会在服务器上获得自己的目录。

为此,我可以在每个目录中放置一个 web.config 文件,其中包含以下内容:

<?xml version="1.0"?>
<configuration>
    <system.web>

      <authorization>
        <allow users="AthleteName"/>
        <allow users="CoachName"/>
        <deny users="*, ?"/>
      </authorization>

    </system.web>
</configuration>

这可能会奏效。我的问题是: 可以随时通过会员页面将新用户添加到站点。 教练/运动员配置在数据库中完成,可以随时更改。它也可以通过不属于我的网站的后端系统进行更改。

我没有使用静态 web.config,而是寻找一种更动态的目录访问授权方式。 有人有好主意吗?

提前致谢。

【问题讨论】:

    标签: asp.net dynamic directory authorization


    【解决方案1】:

    您可以在运行时使用WebConfigurationManager.OpenWebConfiguration() 写入web.config。

    例子:

    Dim myConfiguration As Configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")
    myConfiguration.AppSettings.Settings.Item("myKey").Value = myNewVaule
    myConfiguration.Save()
    

    IIS 应该检测到 web.config 何时更改,但我不确定 urlAuthorizationModule 配置的更改是否立即发生。

    无论如何,您都可以使用 ASP.NET 成员资格。在this tutorial 你可以看到如何使用和配置它。 ASP.NET 成员角色与 urlAuthorizationModule 集成,因此您可以在 BD 中创建具有角色的新用户并保留&lt;allow roles="Admins, Coaches, Athletes"/&gt; 以进行资源授权。

    【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多