Mar*_*mus 5 c# roles asp.net-authorization asp.net-mvc-4
我已经设置了使用下面的代码实现的自定义角色提供程序,除了它似乎从未被使用过,并且正在使用默认提供程序.当使用[Authorize(Roles = "Administrator")]属性装饰HomeController时,CustomRoleProvider正在调用构造函数(我只包含构造函数以查看是否会命中断点)但是没有调用任何方法.然后我留下了一个HTTP Error 401.0 - Unauthorized页面.
除了向web.config添加必要的位之外,我还没有做任何其他事情来使Windows身份验证工作.我认为它正在工作,因为如果我不包括<allow users="*"></allow>(显然没有包含Authorize属性)我得到一个401.2.: Unauthorized: Logon failed due to server configuration错误,所以我假设我正在被认证.
我已根据此SO帖子清除了我的浏览器cookie,但这没有任何效果.
CustomerRoleProvider
public class CustomRoleProvider : RoleProvider
{
public CustomRoleProvider()
{
}
public override bool IsUserInRole(string username, string roleName)
{
bool isUserInRole = false;
// omitted for brevity
return isUserInRole;
}
public override string[] GetRolesForUser(string username)
{
string[] roles = null;
// omitted for brevity
return roles;
}
// omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)
web.config中
<authentication mode="Windows">
</authentication>
<authorization>
<allow users="*"></allow>
<deny users="?"/>
</authorization>
<roleManager defaultProvider="CustomRoleProvider" enabled="true">
<providers>
<clear />
<add name="CustomRoleProvider" type="ProjectName.UI.Mvc.Code.Providers.CustomRoleProvider" />
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
家庭控制器
[Authorize(Roles = "Administrator")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为未将IIS Express设置为使用Windows身份验证.要修复我在解决方案资源管理器中选择了项目,打开属性窗口设置Windows Authentication = Enabled和Anonymous Authentication = Disabled.自定义角色提供商现在可以
| 归档时间: |
|
| 查看次数: |
5570 次 |
| 最近记录: |