私のプロジェクトで条件付きミドルウェアを実装するために、thisの記事をたどりました。 しかし、私たちのプロジェクトを.netcore 1.0から.netcore 1.1にアップグレードしたので、動作しません。条件付きミドルウェアin-aspnet-coreがasp.netコア1.1で動作していません
私は起動時に以下のコードを書いています。
Func<HttpContext, bool> isApiRequest = (HttpContext context) => context.Request.Path.ToString().StartsWith("/api/");
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
//For MVC not API
app.UseWhen(context => !isApiRequest(context), appBuilder =>
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "Cookies",
AutomaticAuthenticate = true
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
AuthenticationScheme = "oidc",
SignInScheme = "Cookies",
AutomaticChallenge = true,
Authority = authority,
RequireHttpsMetadata = false,
ClientId = "sampleClient",
//ClientSecret = "secret",
Scope = { "openid" , "profile" },
ResponseType = "id_token token",//"code id_token",
SaveTokens = true
});
});
//FOR API
app.UseWhen(context => isApiRequest(context), appBuilder =>
{
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions()
{
Authority = authority,
RequireHttpsMetadata = false,
AllowedScopes =
{
"scope1",
"scope2"
}
});
});
は今、私はベースの認証をクッキーではない、でもその条件のAPI認証作業において、ビューベースにActionMethodを(APIで始まらないことを意味)にアクセスしようとします。 APIベースの認証は完全に正常に動作します。
我々は、Identity Serverの最新バージョン4.
すべてのヘルプ/ポインタが理解されるであろうに私たちのプロジェクトを構築しています。
があなたの代わりに 'app'の条件分岐内の' appBuilder'を使用することではないでしょうか?ちょうど考え、それはちょっと変わったように見えます。 – juunas
本当に奇妙です。 configファンクションは起動時に実行されるので、条件が存在しなかったかのようにすべてのミドルウェアを登録します**。 – juunas
VS2017の.netコア1.1で同じ問題が発生しています。与えられたデリゲートは決して実行されないようです。 – NoSaidTheCompiler