动态目录授权asp.net

时间:2013-04-11 07:46:34

标签: asp.net dynamic directory authorization

我的网站正在对用户和角色使用表单身份验证。 我使用小的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,而是在寻找一种更加动态的目录访问授权方式。 有人有个好主意吗?

提前致谢。

1 个答案:

答案 0 :(得分: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中使用角色创建新用户,并保留<allow roles="Admins, Coaches, Athletes"/>以进行资源授权。