我添加了一個自定義角色提供者,但由於什麼原因它沒有被使用,它似乎默認是繼續使用。這裏是我的自定義角色提供MVC自定義角色提供者沒有被擊中
namespace Models.Security
{
public class MatchMakerRoleProvider: RoleProvider
{
public override string[] GetRolesForUser(string username)
{
username = username.Split('\\')[1].ToLower();
using (var db = new EncodingEntities())
{
var user = db.Admin_Users.FirstOrDefault(u => u.UserName.Equals(username, StringComparison.CurrentCultureIgnoreCase));
var roles = from ur in user.Admin_UserRoles
from r in db.Admin_Roles
where ur.RoleId == r.RoleId
select r.RoleName;
if (roles != null)
return roles.ToArray();
else
return new string[] {};
}
}
public override string[] GetUsersInRole(string roleName)
{
throw new NotImplementedException();
}
public override bool IsUserInRole(string username, string roleName)
{
using (var db = new EncodingEntities())
{
var user = db.Admin_Users.FirstOrDefault(u => u.UserName.Equals(username, StringComparison.CurrentCultureIgnoreCase));
var roles = from ur in user.Admin_UserRoles
from r in db.Admin_Roles
where ur.RoleId == r.RoleId
select r.RoleName;
if (user != null)
return roles.Any(r => r.Equals(roleName, StringComparison.CurrentCultureIgnoreCase));
else
return false;
}
}
}
}
我的控制器
[Authorize(Roles = "SuperAdmin")]
public class AdminController : Controller
而且Web.Config中
<authentication mode="Windows">
</authentication>
<roleManager enabled="true" defaultProvider="MatchMakerRoleProvider" cacheRolesInCookie="true">
<providers>
<clear/>
<add name="MatchMakerRoleProvider" type="Models.Security.MatchMakerRoleProvider" />
</providers>
</roleManager>
如果我設置在我CustomRoleProvider斷點,它從來沒有被擊中代碼.. 。
任何想法?
使用這樣的組件時,調試器並不總是命中。無論出於何種原因,它們都無法正確連接到調試器中。相反,添加Debugger.Break()語句強制調試器停止。 –
其實,我也注意到你的命名空間與你在web.config中列出的命名空間不匹配。 –
其實我改變這只是爲了OP我修正了這個問題,這在實際代碼中是沒有問題的。此外,我嘗試添加已調試的東西,但仍未碰到 – StevieB