我正在使用.NET Framework 4.5.1和C#开发ASP.NET MVC 5应用程序。
我使用Windows authentication
允许某些用户访问我的控制器。这是我的web.config
文件:
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<roleManager enabled="true" defaultProvider="WindowsProvider">
<providers>
<clear />
<add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
</system.web>
这是我的Authorize
属性:
[Authorize(Roles = @"MyDomain\MyUploadRole")]
public class UploadController : Controller
{
// ...
}
我想将字符串@"MyDomain\MyUploadRole"
添加到web.config
,但我不知道该怎么做。
我已对此SO answer进行了测试,但它并不适用于我。我已将此部分添加到web.config
文件中:
<roles>
<add key="Role1" value="MyDomain\MyUploadRole" />
<add key="Role2" value="MyDomain\Another role" />
</roles>
然后,我在控制器上更改了这个:
[Authorize(Roles = @"Role1")]
public class UploadController : Controller
{
// ...
}
Internet Explorer要求我的凭据,但我得到了未经授权的回复。
如何在web.config
上设置角色的名称?
答案 0 :(得分:0)
这可能会对你有用:
<configuration>
<system.web>
<authentication mode="Windows"/>
<authorization>
<allow roles="MyDomain\MyUploadRole"/>
<deny users="?"/>
</authorization>
<identity impersonate="true"/>
</system.web>
在您的代码中,您可以检查用户是否处于以下角色:
HttpContext.Current.User.IsInRole("MyDomain\MyUploadRole")