首页 文章

动态目录授权asp.net

提问于
浏览
0

我的网站正在对用户和角色使用表单身份验证 . 我使用小的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 回答

  • 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"/> 以进行资源授权 .

相关问题