Pourquoi onAuthorization s'exécute-t-il avant l'authentification?
Je suis en train de faire quelques personnalisé autorisation j'ai donc créé un contrôleur de substitution de la OnAuthorization
méthode. J'ai aussi appliqué le Authorize
attribut à ce contrôleur.
La question est de savoir pourquoi le OnAuthorization
méthode appelée AVANT les formes de base du processus d'authentification?
Je voudrais autoriser l'utilisateur après qu'il est authentifié.
Ai-je raté quelque chose?
Voici le code:
[Authorize]
public class AuthorizationController : Controller
{
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
List<string> allowedControllers = new List<string>() { "SecurityController" };
List<string> allowedActions = new List<string>() { "Index" };
string controllerName = filterContext.Controller.GetType().Name;
string actionName = filterContext.ActionDescriptor.ActionName;
if (!allowedControllers.Contains(controllerName)
|| !allowedActions.Contains(actionName))
{
filterContext.Result = View("UnauthorizedAccess");
}
}
}
Le contrôleur que j'ai testé avec quelque chose comme:
public class SecurityController : AuthorizationController
{
public ActionResult Index()
{
return View();
}
public ActionResult AnotherIndex()
{
return View();
}
}
source d'informationauteur misha
Vous devez vous connecter pour publier un commentaire.
L'une des premières choses que les
AuthorizeAttribute
n'est de vérifier pour voir si l'utilisateur est authentifié. Si elles ne sont pas alors que c'est quand une redirection vers la page de connexion sera émis.La
AuthorizeAttribute
fondamentalement encapsule le contrôle d'authentification avec l'autorisation de la pièce:Lorsque vous utilisez le AuthorizeAttribute sans rôles/utilisateurs, comme vous le faites dans votre exemple ([Autoriser]), il s'agit essentiellement de vérifier que l'utilisateur est authentifié dans ce cas.
Je serais probablement changer votre code pour remplacer la AuthorizeAttribute au lieu de faire de ce code dans votre contrôleur. Vous pouvez effectuer les opérations suivantes:
Qui suit est un échantillon Personnalisé de l'Autorisation de l'Attribut.
Votre Contrôleur sera comme suit,
Enfin de créer de nouveaux avis Partagé Appel "AuthorizeFailed".