J’ai ajouté un fournisseur de rôle personnalisé, mais pour une raison quelconque, il ne semble pas être utilisé par défaut. Voici mon code pour le fournisseur de rôle personnalisé
namespace Models.Security { public class MatchMakerRoleProvider: RoleProvider { public override ssortingng[] GetRolesForUser(ssortingng username) { username = username.Split('\\')[1].ToLower(); using (var db = new EncodingEntities()) { var user = db.Admin_Users.FirstOrDefault(u => u.UserName.Equals(username, SsortingngComparison.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 ssortingng[] {}; } } public override ssortingng[] GetUsersInRole(ssortingng roleName) { throw new NotImplementedException(); } public override bool IsUserInRole(ssortingng username, ssortingng roleName) { using (var db = new EncodingEntities()) { var user = db.Admin_Users.FirstOrDefault(u => u.UserName.Equals(username, SsortingngComparison.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, SsortingngComparison.CurrentCultureIgnoreCase)); else return false; } } } }
Mon contrôleur
[Authorize(Roles = "SuperAdmin")] public class AdminController : Controller
Et Web.Config
Si je définis un point d’arrêt dans mon CustomRoleProvider, il ne sera jamais touché …
Des idées ?
Le code de fournisseur personnalisé fait-il partie d’un projet distinct dans votre solution et est-il ajouté en tant que référence au projet MVC dans votre solution? Si oui, vous devrez peut-être avoir quelque chose comme: