将 Blazor OIDC 身份验证与 Google OAuth 仅用于 Google 驱动器
Using Blazor OIDC authentication with Google OAuth only for Google Drive
在我的 Blazor WASM 应用程序中,我使用 OIDC 身份验证登录 Google 驱动器,如下所述:
Secure an ASP.NET Core Blazor WebAssembly standalone app with the Authentication library
但是我不想用
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
@if (!context.User.Identity.IsAuthenticated)
{
<RedirectToLogin />
}
</NotAuthorized>
</AuthorizeRouteView>
因为我不想限制用户访问我的 Blazor 页面。
最重要的是:我不希望用户在未登录时看到“正在授权...”消息几秒钟 - 登录是可选的.
如果用户决定使用 Google Drive,我只需要 Google OAuth 登录,这样我就可以获得访问令牌。
如何仅使用 OIDC 身份验证来获取 Google 驱动器的访问令牌?
如果这不可能,我可以使用 C# 登录 Google,如 JavaScript 中所示吗?
以下建议可能有效。如果没有,请报告更多问题,我会尽力改进...
在您的 App.razor 文件中进行以下更改:
替换:
<AuthorizeRouteView RouteData="@routeData"
DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
@if (!context.User.Identity.IsAuthenticated)
{
<RedirectToLogin />
}
else
{
<p>You are not authorized to access this resource.</p>
}
</NotAuthorized>
</AuthorizeRouteView>
和
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
您还必须删除所有添加的授权属性。
您将不再使用 RedirectToLogin
组件...
保留 LoginDisplay
组件以在请求时启用身份验证。
在我的 Blazor WASM 应用程序中,我使用 OIDC 身份验证登录 Google 驱动器,如下所述:
Secure an ASP.NET Core Blazor WebAssembly standalone app with the Authentication library
但是我不想用
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
@if (!context.User.Identity.IsAuthenticated)
{
<RedirectToLogin />
}
</NotAuthorized>
</AuthorizeRouteView>
因为我不想限制用户访问我的 Blazor 页面。
最重要的是:我不希望用户在未登录时看到“正在授权...”消息几秒钟 - 登录是可选的.
如果用户决定使用 Google Drive,我只需要 Google OAuth 登录,这样我就可以获得访问令牌。
如何仅使用 OIDC 身份验证来获取 Google 驱动器的访问令牌?
如果这不可能,我可以使用 C# 登录 Google,如 JavaScript 中所示吗?
以下建议可能有效。如果没有,请报告更多问题,我会尽力改进...
在您的 App.razor 文件中进行以下更改:
替换:
<AuthorizeRouteView RouteData="@routeData"
DefaultLayout="@typeof(MainLayout)">
<NotAuthorized>
@if (!context.User.Identity.IsAuthenticated)
{
<RedirectToLogin />
}
else
{
<p>You are not authorized to access this resource.</p>
}
</NotAuthorized>
</AuthorizeRouteView>
和
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
您还必须删除所有添加的授权属性。
您将不再使用 RedirectToLogin
组件...
保留 LoginDisplay
组件以在请求时启用身份验证。