Je suis en train de construire mon propre système d'adhésion et je ne veux rien avoir à faire avec le MME fournisseur d'appartenances. J'ai regardé autour de l'internet et ici sur StackOverflow mais tout ce que je pourrais trouver est l'adhésion des fournisseurs construit sur le haut de la MS du fournisseur d'appartenances.
De toute façon, j'ai presque tout accroché jusqu'à maintenant, mais je voudrais utiliser un custom Autoriser attribut qui a utilisé mon adhésion à l'infrastructure. J'ai vérifié ce fil de discussion ici sur le site et je suis en train de faire quelque chose de similaire, mais je ne suis pas sûr que c'est calme ce dont j'ai besoin. Jusqu'à présent ce sont les classes que j'ai obtenu:
SessionManager:
public static class SessionManager : ISessionManager
{
public static void RegisterSession(string key, object obj)
{
System.Web.HttpContext.Current.Session[key] = obj;
}
public static void FreeSession(string key)
{
System.Web.HttpContext.Current.Session[key] = null;
}
public static bool CheckSession(string key)
{
if (System.Web.HttpContext.Current.Session[key] != null)
return true;
else
return false;
}
public static object ReturnSessionObject(string key)
{
if (CheckSession(key))
return System.Web.HttpContext.Current.Session[key];
else
return null;
}
}
SharweAuthorizeAttribute: (je ne suis pas vraiment sûr si c'est ce que je devrais être en train de faire)
public class SharweAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (SessionManager.CheckSession(SessionKeys.User) == true)
return true;
else
return false;
}
}
Maintenant, voici ce dont j'ai besoin:
- Est mon SharweAuthorizeAttribute classe corriger en premier lieu?
- J'ai besoin d'être en mesure de rediriger les les utilisateurs non authentifiés à la connexion page
-
J'ai besoin d'autoriser les utilisateurs sur la base leurs rôles (en utilisant mon propre rôle le fournisseur), donc je ferais quelque chose comme:
[SharweAuthorize(Roles="MyRole")]
C'est, je suppose... Toutes les suggestions sont les bienvenues :)
Mise à JOUR: Ok je viens de lire cette page et de trouver la solution à la question numéro deux:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (SessionManager.CheckSession(SessionKeys.User) == false)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "action", "ActionName" },
{ "controller", "ControllerName" }
});
}
else
base.HandleUnauthorizedRequest(filterContext);
}
Permettez-moi de savoir si je l'ai eu droit s'il vous plaît...