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