RavenDB.Identity 9.0.0
dotnet add package RavenDB.Identity --version 9.0.0
NuGet\Install-Package RavenDB.Identity -Version 9.0.0
<PackageReference Include="RavenDB.Identity" Version="9.0.0" />
paket add RavenDB.Identity --version 9.0.0
#r "nuget: RavenDB.Identity, 9.0.0"
// 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>。
- 添加一个继承自 Raven.Identity.IdentityUser 的 AppUser 类
public class AppUser : Raven.Identity.IdentityUser
{
/// <summary>
/// A user's full name.
/// </summary>
public string FullName { get; set; }
}
- 在 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();
...
}
- 在您的控制器操作中,完成后调用 .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已被计算。 |
-
net8.0
- Microsoft.Extensions.DependencyInjection (>= 8.0.0)
- Microsoft.Extensions.Identity.Core (>= 8.0.1)
- RavenDB.Client (>= 6.0.2)
- RavenDB.DependencyInjection (>= 5.0.1)
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