首页 > 其他分享 >Blazor Server完美实现Cookie Authorization and Authentication

Blazor Server完美实现Cookie Authorization and Authentication

时间:2022-12-03 21:46:07浏览次数:63  
标签:core 登录 Server Authentication Cookie net Blazor

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的同学有帮助。

 

标签:core,登录,Server,Authentication,Cookie,net,Blazor
From: https://www.cnblogs.com/neozhu/p/16948559.html

相关文章

  • SQL Server中的having(对分组后的信息过滤)
    https://blog.csdn.net/tswc_byy/article/details/81909822  二、having的用法1.解释:having子句是用来对分组之后的信息进行过滤,因此使用having时通常都会先使用grou......
  • Sqlserver中的 树节点
    题目: https://leetcode.cn/problems/tree-node/给定一个表 tree,id是树节点的编号, p_id 是它父节点的 id。+----+------+|id|p_id|+----+------+|1|null......
  • SqlServer 中 case when 的的两种写法
    https://mp.weixin.qq.com/s?src=11&timestamp=1670070823&ver=4204&signature=OpXckzt0JIEqamYo0WpJqwgtbQDMFkUpQ0Nc56WLqzHq0bMR91TRHbCxycSCx49JmQNO9K7MCZ-XLqzjJeTnS......
  • SqlServer行转列,列转行
    文章来源:https://leetcode.cn/problems/rearrange-products-table/solution/by-esqiimulme-pjiy/列转行用union或unionall将多列的字段整合到一行。(当使用union时,mysql......
  • JSP-入门学习、案例-改造Cookie案例
    JSP-入门学习4.JSP的内置对象:在jsp页面中不需要获取和创建,可以直接使用的对象jsp一共有9个内置对象。今天学习3个:request......
  • 使用Serverless的函数需要关注这些内容
    使用Serverless的函数需要关注这些内容有了serverless,我们只需要编写函数就可以了,但在函数的触发的时候需要特别留意的是它的上下文的问题。这篇文章我们讲讲Serverless中......
  • 了解了一下Cookie
    昨天做接口测试被Cookie折腾得云里雾里的,今天下午有时间特意了解了一下。 一:Edge浏览器查看Cookie的路径:设置-》Cookie和网站权限二:一个cookies包含以下信息:(1)cookie名......
  • http-server服务
     npm安装服务npminstallhttp-server-g 启动服务访问文件的index.htmlhttp-server   参考网站https://xiaoman.blog.csdn.net/article/details/1263......
  • SQL SERVER
    1.数据查询数据查询是对数据库操作最复杂的一个操作   动词:SELECT 对表,视图等对象中的记录的查询。2.数据定义   动词:CREATE,DROP,ALTER 对数据库......
  • SQL Server如何设置用户名和密码登录
    第一步正常先由Windows身份验证登录第二步右击local第三步选择属性第四步然后在弹出的菜单中选择安全。勾选SqlServer与Windows身份验证模式。然后点击确定,然后关闭这个界面......