Benutzerdefinierte Autorisierungs-Basis mit Rollen asp.net mvc

Habe ich eine benutzerdefinierte Authentifizierung und Autorisierung für meine Nutzer.Das problem, das ich bin vor ist, wie man mvc zu prüfen, die Rolle von innen meine Benutzer-Tabelle entspricht die [zu Autorisieren(Rolle)] auf meinen controller so eingestellt httpauthorised zu wahren.Unten ist mein customauthorise Klasse.

 [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class CustomAuthorizeAttribute : AuthorizeAttribute 
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            filterContext.Controller.TempData["ErrorDetails"] = "You must be logged in to access this page";
            filterContext.Result = new RedirectResult("~/User/Login");
            return;
        }

        if (filterContext.HttpContext.Request.IsAuthenticated)
        {
            using (var db = new GManagerDBEntities())
            {
                var authorizedRoles = (from u in db.Users
                                       where u.Username == filterContext.HttpContext.User.Identity.Name
                                       select u.Role).FirstOrDefault();
                Roles = String.IsNullOrEmpty(Roles) ? authorizedRoles.ToString() : Roles;
            }
        }

        if (filterContext.Result is HttpUnauthorizedResult)
        {
            filterContext.Controller.TempData["ErrorDetails"] = "You do nat have necessary rights to access this page";
            filterContext.Result = new RedirectResult("~/User/Login");
            return;
        }

    }
    public CustomAuthorizeAttribute(params object[] roles)
    {
        if (roles.Any(r => r.GetType().BaseType != typeof(Enum)))
            throw new ArgumentException("roles");

        this.Roles = string.Join(",", roles.Select(r => Enum.GetName(r.GetType(), r)));
    }
}

unten ist mein controller mit Dekoration

 [CustomAuthorize(Role.Administrator)]
    [HttpGet]
    public ActionResult CreateEmployees()
    {
        return View();
    }

und meine enum-Element für Rolle

public enum Role
{
    Administrator = 1,
    UserWithPrivileges = 2,
    User = 3,
}

und Modell

public class UserModel
{
    public int UserID { get; set; }
    [Required]
    [Display(Name="Username:")]
    public string Username { get; set; }
    [Required]
    public string Password { get; set; }
    public int Role { get; set; }
}

sehen pastie für klare Sicht pastie

links habe ich angesehen bei dem Versuch, dies zu lösen, unter anderem, aber ich kann nicht scheinen, um Stück es zusammenMVC-3 Autorisieren von benutzerdefinierten Rollen
http://forums.asp.net/p/1573254/3948388.aspx

Anpassbare Autorisierung Attribut in MVC 4 mit Rollen

werfen Sie einen Blick auf codeproject.com/Articles/578374/...
Hoffe auf eine einzige Tabelle und die Rolle als ein integer, aber wenn alles scheitert, wird Sie einfach erstellen Sie eine Rollen-Tabelle und der Umsetzung Ihrer Anregung @VikasRana
Ich habe versucht, es zu verändern nach Ihrem link zu dieser pastie.org/9510205 noch kein Glück
Endlich geschafft, ich hatte nicht die ' protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)' - Methode in der global.asax

InformationsquelleAutor GotaloveCode | 2014-08-28

Schreibe einen Kommentar