gpt4 book ai didi

BlazorServer完美实现CookieAuthorizationandAuthentication

转载 作者:我是一只小鸟 更新时间:2022-12-03 22:35:36 26 4
gpt4 key购买 nike

Blazor server-side application用Microsoft.AspNetCore.Identity.EntityFrameworkCore实现Authorization 和 Authentication 完整教程.

本方案只适用于Blazor Server-Size Application 。

完整项目源代码,参考: https://github.com/neozhu/CleanArchitectureWithBlazorServer 。

需要引用的类库如下:

                              <PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="7.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="7.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Duende.IdentityServer" Version="6.2.0" />
    <PackageReference Include="Duende.IdentityServer.AspNetIdentity" Version="6.2.0" />
    <PackageReference Include="Duende.IdentityServer.EntityFramework" Version="6.2.0" />
    <PackageReference Include="Duende.IdentityServer.EntityFramework.Storage" Version="6.2.0" />
    <PackageReference Include="Duende.IdentityServer.Storage" Version="6.2.0" />

                        

这里的实现方式和Asp.net core 3.0,5.0,6.0, 7.0 几乎一样的配置,但又也有一些特殊之处。下面我分享一下的代码.

从上面引用的类库发现我并使用的是Microsoft.AspNetCore.Identity.EntityFrameworkCore + Duende.IdentityServer 都已经升级到最新版本.

配置 Microsoft.AspNetCore.Identity.EntityFrameworkCore 

用于生成需要后台表 。

  。

  。

 这里和微软官方的文档略有不同我使用的AddIdentity方法.

添加 Authorization and Authentication 配置

  。

  。

 这类servicescollection配置和asp.net core cookie认证是一直,只是这里不需要配置Login,Logout路径 。

开发一个登录Blazor Component(Page)

  。

 重点这里需要生成一个Token,而不是直接传用户名+密码,因为安全 不能明文传输密码。这里我们需要调用auth/login?token=.... 实现登录 。

AuthController 用户登录并获取授权

  。

 这里的写法和asp.net core登录一样都使用SignInManager<ApplicationUser> 登录成功后和asp.net core应用一样保存于账号相关的所有授权比如Roles和Claims  。

如何需要自定义添加自定义的内容比如下面的TenantId TenantName ,ApplicationClaimsIdentityFactory就是用于添加需要内容.

  。

 获取当前登录的账号信息

  。

 之前Blazor Server-Side application 是不支持 IHttpContextAccessor获取账号信息,现在竟然可以了.

Blazor server Component调用UserManager<ApplicationUser>需要注意的地方

  。

Component需要继承 添加 @inherits OwningComponentBase 。

  。

 需要通过ScopedServices.GetRequiredService<UserManager<ApplicationUser>>(); 创建才安全 。

希望对学习Blazor的同学有帮助.

  。

最后此篇关于BlazorServer完美实现CookieAuthorizationandAuthentication的文章就讲到这里了,如果你想了解更多关于BlazorServer完美实现CookieAuthorizationandAuthentication的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com