J'ai essayé d'empêcher la redirection lorsque je retourne une iactionnelle notaurée d'un contrôleur, mais quelles que soient mes tentatives, il est notauthorized se traduit par une redirection.
J'ai essayé ce qui est mentionné Here (même problème, utilisant le cadre de bêta plus âgé, j'utilise 1.0.0-RC1-final). Je n'ai pas l'espace de nom de notifications (a été supprimé dans RC1-Final). P>
Ceci est mon contrôleur de connexion: P>
services.Configure<CookieAuthenticationOptions>(o => { o.LoginPath = PathString.Empty; o.ReturnUrlParameter = PathString.Empty; o.AutomaticChallenge = false; });
4 Réponses :
La solution ne doit pas configurer directement CookieAuthentiollageOptions directement, mais faites-la via IdentityOptions comme ceci:
services.Configure<IdentityOptions>(o => { o.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents() { OnRedirectToLogin = ctx => { if (ctx.Response.StatusCode == (int)HttpStatusCode.Unauthorized) { return Task.FromResult<object>(null); } ctx.Response.Redirect(ctx.RedirectUri); return Task.FromResult<object>(null); } }; });
Il suffit d'utiliser o.cokies.atapiClicationcookie.automaticchallenge = false; code> suffisait pour moi (je n'ai jamais voulu une redirection).
@ Peppel-G C'est la seule chose que je puisse me rendre au travail. Merci beaucoup.
pris d'ici (Shawn Wildermuth -> API d'identité et de repos ASP.NET 5 -> Commentaire de "Mehdi Hanafi") et a testé l'API avec Postman
config.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents() { OnRedirectToLogin = ctx => { if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200) { ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized; return Task.FromResult<object>(null); } else { ctx.Response.Redirect(ctx.RedirectUri); return Task.FromResult<object>(null); } } };
Comment l'obtenez-vous de rediriger en premier lieu. Je souhaite à Dieu que je pourrais avoir le mien pour rediriger. Ça ne le fera pas.
Si vous avez des pages pour lesquelles la redirection est souhaitée et que d'autres URL qui ne doivent pas avoir de redirection, voir cette question pour une solution qui utilise la logique redirection par défaut uniquement pour les URL non-API: P>
Supprimer Redirect sur les URL de l'API dans ASP.NET CORE P>
de l'identité 2.0,
Vous auriez besoin d'ajouter: et dans configureservices: p> La vérification des segments doit bien sûr être ajustée à vos itinéraires. < / p> p>
Essayez-vous de le faire sur une page de connexion? Ou est-ce pour l'authentification de l'API de repos? Si c'est pour une API, vous pourriez regarder cela: Wildermuth.com/2015/9/10/asp_net_5_identity_and_rest_apis
API de repos, votre lien suppose que les notifications espaces de noms existent, mais il a été supprimé. La solution liée ne fonctionne plus.