I added a custom role provider, but for some reason I didnβt use it, it seems that by default it is used all the time. Here is my code for custom role provider
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; } } } }
My controller
[Authorize(Roles = "SuperAdmin")] public class AdminController : Controller
And Web.Config
<authentication mode="Windows"> </authentication> <roleManager enabled="true" defaultProvider="MatchMakerRoleProvider" cacheRolesInCookie="true"> <providers> <clear/> <add name="MatchMakerRoleProvider" type="Models.Security.MatchMakerRoleProvider" /> </providers> </roleManager>
If I set a breakpoint in my CustomRoleProvider, it will never hit ...
Any ideas?
source share