web-dev-qa-db-fra.com

Comment vérifier si l'utilisateur est autorisé à l'intérieur de l'action

Habituellement, je protège mes actions avec [Authorize] Mais cette fois, je dois vérifier si un utilisateur est autorisé à l'intérieur de l'action.

Par exemple

if(userIsAuthorized) {
    //do stuff
}
else {
    //return to login page
}

Je crois J'utilise "Authentification des formulaires"

Cette question est un peu similaire à ceci mais aucune des réponses données ne semblait fonctionner.

EDIT: J'ai fait de plus en plus de creuser, il semble que je cassis que je romps sur une action qui a [Authorize], l'utilisateur.Identifity est défini, mais sur les actions sans cela, l'utilisateur.Identifity est vide, même si je suis connecté

26
elwyn

Request.IsAuthenticated devrait travailler pour ce que vous essayez de faire.

5
Esteban Araya

Je suggère d'abord de déterminer le type d'autorisation de votre utilisation. ;)

La réponse que vous avez affichée est correcte. D'après ce que je me souviens de piquer autour de l'attribut [Autoriser] Attribut et d'Actionfilter Code MVC d'appels internes à interne.User.Identifity.isaThenti.

1
John Farrell

Créer un attribut comme ceci: OnActionExecuting va s'exécuter avant de tout autre code de l'action

     public class IsAuthenticatedAttribute : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
               //do your validations here. and redirect to somewhere if needed. 
                filterContext.HttpContext.Response.Redirect("/") //this will send user to home.
            }
        }

sur chaque action où vous devez vérifier, ajouter attribut comme ceci:

[IsAuthenticatedAttribute]
public ActionResult ActionName(parameters?)
{
     // no need to worry about checking here.
    //do you action things
}

EDIT: Celui-ci se termine toujours l'action et redirect seulement elle. Pas tellement utile.

1
messed-up