Comment faire pour vérifier si l'utilisateur est autorisé à l'intérieur de l'Action
Habituellement, je protéger mes Actions avec [Authorize]
mais cette fois j'ai besoin de 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 pense je suis en utilisant des Formes d'Authentification'
Cette question est similaire à cette mais aucune des réponses données semblait fonctionner.
EDIT: j'ai fait un peu plus creuser - il semble, si j'ai un point d'arrêt sur une Action qui a [Authorize]
, l'Utilisateur.L'identité est définie, mais sur les Actions sans elle, l'Utilisateur.L'identité est vide, même si je suis connecté
- J'ai réglé mon problème en utilisant un hack-ish solution de contournement, je vais supposer que vos réponses sont correctes, et c'est grâce à mon étrange mise en œuvre de l'authentification que les choses sont étranges...
Vous devez vous connecter pour publier un commentaire.
Si vous voulez simplement savoir si l'utilisateur est connecté:
Si vous essayez de faire quelque chose de rôle spécifique:
La
User
instance est une propriété publique de laController
classe, de sorte que vous aurez toujours accès à partir d'un Contrôleur de vous écrire. Si aucun utilisateur n'est connecté, vous devriez avoir unGenericPrincipal
pour laUser
et unGenericIdentity
pour laUser.Identity
, donc ne vous inquiétez pas à propos de la vérification pour les valeurs null.[Authorize]
'd Action[Authorize]
attribut etUser.Identity.IsAuthenticated
esttrue
. Êtes-vous sûr que la session est en fait connecté lorsque vous testez ce?[Authorize]
attribut pourUser
etUser.Identity
pour être valide. Vous disposez de tous les autres attributs sur le Contrôleur? Avez-vous essayé de faire cela dans une nouvelle, propre projet MVC, afin de s'assurer que rien d'autre dans votre application est en conflit?Request.IsAuthenticated
doit travailler pour ce que vous essayez de faire.[Authorize]
il fonctionne bien, mais si je le fais sur cette Action (non décorée avec [Autoriser]), il est toujours faux, peu importe si je suis connecté ou pas.Je vous suggérons d'abord de déterminer quel type d'Autorisation de votre aide. 😉
La réponse que vous avez posté est correct. À partir de ce que je me souviens de fouiller l'attribut [Authorize] liées ActionFilter code MVC en interne les appels de Page.De l'utilisateur.L'identité.IsAuthenticated tout comme ceux des exemples de code.
Créer un attribut comme ceci: OnActionExecuting seront exécutés en premier, avant les autres le code de l'action
sur chaque action que vous devez consulter, ajouter un attribut comme ceci:
EDIT:
Cette encore complète l'action et ensuite seulement de les réorienter. Pas tellement utile.