2010-04-01 5 views
3

J'ai jeté un oeil à l'adhésion à asp.net et il semble fournir tout ce dont j'ai besoin, mais j'ai besoin d'une fonctionnalité de rôle personnalisée.asp.net Adhésion: extension du rôle?

Actuellement, je peux ajouter un utilisateur à un rôle, très bien.

Mais je dois aussi pouvoir ajouter des autorisations aux rôles ..

-à-dire

Rôle: Editeur Permissions: Peut affich Editor, peut écrire au tableau des rédacteurs en chef, peut supprimer des entrées dans le tableau des éditeurs .

Actuellement, il ne supporte pas cela, L'idée derrière cela est de créer une option d'administration dans mon programme pour créer un rôle, puis attribuer des autorisations à un rôle pour dire "permettre à l'utilisateur d'afficher une partie de l'application "," permettre à l'utilisateur d'ouvrir un élément de menu "

Des idées comment je voudrais mettre en œuvre ce genre de chose?

Je présume un fournisseur de ROLE personnalisé mais je me demandais si une sorte d'extension de cadre existait déjà sans rouler le mien?

Ou quelqu'un connaît un bon tutoriel sur la façon de résoudre ce problème?

Je suis tout à fait satisfait de ce que asp.net fournisseur SQL a créé en termes de tables etc ... mais je pense que je dois prolonger ce en ajoutant une autre table appelée RolesPermissions

puis je suppose :-) ajouter une sorte d'énumération dans la table pour chaque permission valide ??

Mercis à l'avance

Répondre

1

Vous pouvez programmation permettre ou ne pas permettre à l'utilisateur de voir des pages, ou faire des actions en utilisant par exemple la fonction IsInRole, et vérifiez si vous laissez ou non un utilisateur à faire quelques actions.

HttpContext.Current.User.IsInRole("rolename") 

Vous pouvez faire une classe/ou d'une table avec vos permissions, et dépendent du rôle que l'utilisateur appartient, pour ouvrir, fermer, permis etc beaucoup de pense sur la même page. J'ai programmé une idée comme ça sur mes programmes, c'est très simple.

Voici une idée ...

public enum csPermissions 
{ 
    pActionDelete = 1, 
    pActionEdit = 2 , 
    ...more actions... 
} 

private int[] AdminPermission = { 
    (int)csPermissions.pActionEdit, 
    (int)csPermissions.pActionDelete, 
    .... 
}; 

private int[] BackOfficePermission = { 
    (int)csPermissions.pActionEdit, 
    .... 
}; 

public static bool IsThisAllowed(csPermissions AskPermitForThisAction) 
{ 
    ... questions here for all users roles... 
    ... here is only an example ..... 
    if (HttpContext.Current.User.IsInRole("Administator"))) 
    { 
     for (int i = 0; i < AdminPermission.Length; i++) 
      if (AdminPermission[i] == (int)AskPermitForThisAction) 
       return true; 
    } 

    ... 
    return false; 
} 

Hope this aide.

0

Vous pouvez utiliser l'infrastructure pour restreindre l'accès à des pages entières ou à des annuaires en fonction des rôles. Cela peut être configuré dans l'élément d'autorisation de web.config. En outre, si vous utilisez SiteMap pour votre menu et que vous avez configuré l'autorisation, vous pouvez utiliser le découpage de sécurité pour restreindre le menu. http://www.google.com/search?q=asp.net+security+trimming

Questions connexes