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é
Request.IsAuthenticated
devrait travailler pour ce que vous essayez de faire.
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.
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.