Dans ASP.NET Core 2.0, le middleware .UseAuthentication () a un changement de rupture qui ne permet plus à la ancienne syntaxe mentionnée ici de fonctionner.
La nouvelle version semble gérer la configuration dans addAuthentication, mais je ne trouve aucun détail sur la façon de modifier mon ancien code qui spécifiait une URL de connexion et de déconnexion personnalisée.
services.AddAuthentication(o =>
{
// Where can I specify this?????
var opt = new CookieAuthenticationOptions()
{
LoginPath = "/api/login",
LogoutPath = "/api/logout",
};
o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
});
Toute aide serait appréciée...
Mis à jour car cela a de nouveau légèrement changé dans les bits 2.0 RTM
Il s'avère que c'est beaucoup plus facile que prévu, mais comme la documentation officielle n'a pas encore été mis à jour, voici exactement ce qui fonctionne pour l'authentification par cookie ordinaire:
Configuration:
Dans ConfigureServices()
configurez le mécanisme d'authentification spécifique:
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(o =>
{
o.LoginPath = "/api/login";
o.LogoutPath = "/api/logout";
// additional config options here
});
Puis dans Configure()
pour connecter réellement le middleware:
app.UseAuthentication();
Utilisation des composants d'authentification
Ensuite, pour utiliser les composants Auth réels, la logique est passée de l'objet HttpContext.Authentication
À seulement HttpContext
dans la logique d'application comme le code du contrôleur:
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(identity));
ou:
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
L'exemple que vous avez publié ne semble de toute façon pas être un vrai code (c'est-à-dire que new CookieAuthenticationOptions()
se trouve dans l'appel AddAuthentication, plutôt que comme argument à AddCookieAuthentication
). Vous n'ajoutez pas d'autorisations à l'intérieur de l'appel AddAuthorization
, vous configurez simplement les middlewares standards ici, voir cette annonce .
Vieux:
services.AddAuthentication(sharedOptions =>
sharedOptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
AutomaticChallenge = true,
AutomaticAuthenticate = true,
Nouveau:
app.AddAuthentication(o => {
o.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
});
Et le
services.AddXxxAuthentication(new XxxOptions() { ... });
sont remplacés par
services.AddXxxAuthentication(options => {
});
être en ligne avec toutes les autres méthodes qui acceptent une configuration.
Il vaut également toujours la peine de jeter un coup d'œil au Référentiel GitHub des annonces ASP.NET Core , où l'équipe ASP.NET Core annonce des changements de rupture pour la prochaine version, sélectionnez simplement un jalon spécifique, c'est-à-dire 2.0 .0-preview1 , 2.0.0-preview2 , etc.