RavenDB.Identity 9.0.0

dotnet add package RavenDB.Identity --version 9.0.0                
NuGet\Install-Package RavenDB.Identity -Version 9.0.0                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块版本的 Install-Package
<PackageReference Include="RavenDB.Identity" Version="9.0.0" />                
对于支持 包引用的项目,将此 XML 节点复制到项目文件以引用包。
paket add RavenDB.Identity --version 9.0.0                
#r "nuget: RavenDB.Identity, 9.0.0"                
#r 指令可以用于 F# Interactive 和多语言笔记本。将此内容复制到交互式工具或脚本的源代码中以引用该包。
// Install RavenDB.Identity as a Cake Addin
#addin nuget:?package=RavenDB.Identity&version=9.0.0

// Install RavenDB.Identity as a Cake Tool
#tool nuget:?package=RavenDB.Identity&version=9.0.0                

<img src="https://github.com/JudahGabriel/RavenDB.Identity/blob/master/RavenDB.Identity/nuget-icon.png?raw=true" width="50px" height="50px" /> RavenDB.Identity

为 RavenDB 和 ASP.NET Core 提供简单易用的身份提供者。使用 Raven 存储您的用户和角色。

说明

重要: 是否想从之前的 RavenDB.Identity 版本升级?有关迁移到最新 RavenDB.Identity 的步骤,请参阅 <a href="#updating-from-old-version">从旧版本更新</a>。

  1. 添加一个继承自 Raven.Identity.IdentityUser 的 AppUser 类
public class AppUser : Raven.Identity.IdentityUser
{
    /// <summary>
    /// A user's full name.
    /// </summary>
    public string FullName { get; set; }
}
  1. 在 appsettings.json 中配置您的 Raven 连接
"RavenSettings": {
    "Urls": [
        "http://live-test.ravendb.net"
    ],
    "DatabaseName": "Raven.Identity.Sample.RazorPages",
    "CertFilePath": "",
    "CertPassword": ""
},

3a. 在 Startup.cs 中连接所有配置。注意,此方法将使用电子邮件地址作为用户 ID 的一部分,因此更改电子邮件地址也会更改用户 ID。

public void ConfigureServices(IServiceCollection services)
{    
    // Add RavenDB and identity.
    services
        .AddRavenDbDocStore() // Create an IDocumentStore singleton from the RavenSettings.
        .AddRavenDbAsyncSession() // Create a RavenDB IAsyncDocumentSession for each request. You're responsible for calling .SaveChanges after each request.
        .AddIdentity<AppUser, IdentityRole>() // Adds an identity system to ASP.NET Core
        .AddRavenDbIdentityStores<AppUser, IdentityRole>(); // Use RavenDB as the store for identity users and roles. Specify your app user type here, and your role type. If you don't have a role type, use Raven.Identity.IdentityRole.
    ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    // Instruct ASP.NET Core to use authentication and authorization.
    app.UseAuthentication();
    app.UseAuthorization();
    ...
}
  1. 在您的控制器操作中,完成后调用 .SaveChangesAsync()。通常这是通过 RavenController 基类(用于 MVC/WebAPI 项目)或通过 页面过滤器(用于 Razor Pages 项目)来完成的。

更改用户 ID 生成方式

旧版RavenDB.Identity使用基于电子邮件的用户标识,例如"AppUser/[email protected]"。较新版本使用Raven的默认行为,通常是"AppUsers/1-A"`. 若要更改Raven如何控制您的用户ID,请参阅Raven的全局标识生成约定

如果您的数据库中存在使用基于电子邮件的ID约定旧用户,没问题,Raven.Identity仍然可以与旧用户一起工作。如果您希望所有用户具有一致的ID,则可以使用ChangeUserIdType迁移将现有用户迁移到新的ID生成方案。

// Important: backup your database before running this migration.
var newIdType = UserIdType.ServerGenerated; // Or whatever ID type you prefer.
var migration = new Raven.Identity.Migrations.ChangeUserIdType(docStore, newIdType);
migration.Migrate<AppUser>(); // AppUser, or whatever you user type is.

无论ID如何生成,唯一性基于电子邮件地址。您不能在您的数据库中有两个具有相同电子邮件地址的用户。

修改Raven约定

需要修改RavenDB约定?您可以使用services.AddRavenDbDocStore(options)重载。

services.AddRavenDbDocStore(options =>
{
    // Maybe we want to change the identity parts separator.
    options.BeforeInitializeDocStore = docStore => docStore.Conventions.IdentityPartsSeparator = "-";
})

<a id="updating-from-old-version">从旧版本的RavenDB.Identity更新</a>

正在使用RavenDB.Identity v5或更早版本并希望升级到最新版本?您需要运行CompareExchangeUniqueness迁移。

// Important: backup your database before running this migration.
var migration = new Raven.Identity.Migrations.CompareExchangeUniqueness(docStore);
migration.Migrate();

此升级步骤是必要的,因为我们更新了RavenDB.Identity,使其使用RavenDB的集群安全的比较/交换来强制执行基于电子邮件的唯一性。

旧版RavenDB.Identity曾依赖于IdentityUserByUserName ID来强制唯一性,但这在集群中不一定能工作。执行此迁移将在Raven中为每个用户电子邮件地址创建比较/交换值,并删除现在已经过时的IdentityUserByUserNames集合。

入门和示例项目

需要帮助?检查我们的示例以了解如何使用它。

未使用.NET Core?

查看我们的姊妹项目以获取适用于完整.NET Framework的RavenDB身份提供者。

产品 兼容和额外的计算目标框架版本。
.NET net8.0兼容。 net8.0-android已被计算。 net8.0-browser已被计算。 net8.0-ios已被计算。 net8.0-maccatalyst已被计算。 net8.0-macos已被计算。 net8.0-tvos已被计算。 net8.0-windows已被计算。
兼容的目标框架
包含的目标框架(在包中)
有关目标框架.NET Standard的更多信息。

NuGet包 (2)

显示依赖于RavenDB.Identity的前2个NuGet包

下载
BeyondAuth.Identity.Core

包描述

LeadSoft.Adapter.RavenDBIdentity

LeadSoft® RavenDB 身份类。

GitHub仓库 (1)

显示依赖于RavenDB.Identity的前1个流行的GitHub仓库

仓库 星星
RemiBou/Toss.Blazor
使用 AspNetCore Blazor 的实验性项目
版本 下载 最后更新
9.0.0 8,938 1/13/2024
8.0.9 21,467 7/6/2023
8.0.8 3,356 4/20/2023
8.0.7 34,398 5/5/2021
8.0.6 1,357 4/1/2021
8.0.5 2,823 12/17/2020
8.0.4 2,438 9/22/2020
8.0.3 1,200 9/2/2020
8.0.2 1,851 7/28/2020
8.0.1 1,058 7/26/2020
8.0.0 1,070 7/25/2020
7.0.1 4,118 12/19/2019
7.0.0 1,170 12/13/2019
6.2.0.2 2,339 12/3/2019
6.2.0.1 1,119 11/28/2019
6.2.0 1,213 11/13/2019
6.1.0 3,590 7/8/2019
6.0.6 1,231 6/26/2019
6.0.5 1,169 6/10/2019
6.0.3 1,945 4/5/2019
6.0.2 4,809 4/1/2019
6.0.1 1,197 3/21/2019
5.0.1 1,191 3/11/2019
5.0.0 1,323 3/4/2019
4.4.1 3,929 10/8/2018
4.3.0 3,362 2/24/2018
4.2.0 1,558 2/23/2018
4.1.1 1,475 2/22/2018
4.0.1 1,602 2/11/2018
4.0.0 1,633 2/9/2018
3.0.0 1,735 9/28/2017
2.1.0 1,633 9/6/2017
2.0.4 1,641 9/5/2017
2.0.3 1,605 9/5/2017
2.0.2 1,614 8/29/2017
2.0.1 1,611 8/29/2017
2.0.0 3,016 8/29/2017
1.0.3 1,987 8/23/2017
1.0.1 5,735 8/23/2017
1.0.0 5,489 8/23/2017

升级到 .NET 8, Raven 6