私は次のことを行いました(動作するはずですが動作しません)、リダイレクトなし、エラーなし、何もなし、認証なしでページを表示するだけですが、何が問題ですか?
ステップ1。インストールパッケージMicrosoft.AspNetCore.Authentication.OpenIdConnect
ステップ2。 Statup.csを編集
「ConfigurationServices」の下に追加
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false; //false for development only
options.ClientId = "mywebclient";
options.ResponseType = "code";
options.UsePkce = true;
options.Scope.Add("profile");
options.Scope.Add("offline_access");
options.SaveTokens = true;
});
「構成」の下に追加
...
services.AddAuthorization();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
....
手順3。ブレザーページに属性Authorizeを追加
@page "/item"
@attribute [Authorize]
認証なしでページを表示するだけですが、何が問題ですか
アプリにAuthorizeRouteViewを追加していない可能性があります。 @attribute [Authorize]
は、そのページコンポーネントに[AuthorizeAttribute]
を追加するディレクティブにすぎないことに注意してください。ルートの認証を有効にするには、次のことを行う必要があります。
<CascadingAuthenticationState>
を追加する<AuthorizeRouteView>
を追加します。参照 公式ドキュメント<AuthorizeView>
を使用します。承認されていないときにコンポーネントを表示するには、<NotAuthorized>
を追加します。また、Authorizing
を使用して、ユーザーの承認中にコンポーネントを表示します。参照 公式ドキュメントたとえば、BlazorApp.razor
は次のようになります。
<CascadingAuthenticationState>
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" >
<NotAuthorized>
You're not allowed!
</NotAuthorized>
<Authorizing>
<h1>Authentication in progress</h1>
</Authorizing>
</AuthorizeRouteView>
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
</CascadingAuthenticationState>