使用 Identity Server 3 和 AspNet Identity 为项目配置 IUserTokenProvider
Configuring IUserTokenProvider for a project using Identity Server 3 and AspNet Identity
我很难理解在我的身份服务器中为我的 UserManager
配置 IUserTokenProvider
的正确方法。我的目标是能够重置用户的密码。
首先,我知道我需要配置一个提供者,例如:
var provider = new DpapiDataProtectionProvider("MyAppName");
但我不确定我应该把这段代码放在哪里。它会在我的 UserManager
构造函数上吗?
这是我的构造函数现在的样子,但似乎不对,否则,我将如何更改验证和创建的目的?
public UserManager(UserStore store)
: base(store)
{
var provider = new DpapiDataProtectionProvider("MyAppName");
UserTokenProvider = new DataProtectorTokenProvider<User>(provider.Create("EmailConfirmation"));
}
最后一个问题,该提供商是否会自动处理之前成功使用令牌的情况,以防止进一步的恶意请求?
PS: 我后面用的是EntityFramework.
如果它是 public 属性,你可以做这样的事情(这是很多身份示例处理它的方式)。
var provider = new DpapiDataProtectionProvider("MyAppName");
var userManager = new UserManager(userStore)
{
UserTokenProvider = new DataProtectorTokenProvider<User>(provider.Create("EmailConfirmation"))
};
关于最后一个问题,如果您使用的是 EntityFramework(或任何支持 SecurityStamps 的实现),是的,您会受到保护。 What is ASP.NET Identity's IUserSecurityStampStore<TUser> interface? 是了解 SecurityStamps 的良好入门参考。
我很难理解在我的身份服务器中为我的 UserManager
配置 IUserTokenProvider
的正确方法。我的目标是能够重置用户的密码。
首先,我知道我需要配置一个提供者,例如:
var provider = new DpapiDataProtectionProvider("MyAppName");
但我不确定我应该把这段代码放在哪里。它会在我的 UserManager
构造函数上吗?
这是我的构造函数现在的样子,但似乎不对,否则,我将如何更改验证和创建的目的?
public UserManager(UserStore store)
: base(store)
{
var provider = new DpapiDataProtectionProvider("MyAppName");
UserTokenProvider = new DataProtectorTokenProvider<User>(provider.Create("EmailConfirmation"));
}
最后一个问题,该提供商是否会自动处理之前成功使用令牌的情况,以防止进一步的恶意请求?
PS: 我后面用的是EntityFramework.
如果它是 public 属性,你可以做这样的事情(这是很多身份示例处理它的方式)。
var provider = new DpapiDataProtectionProvider("MyAppName");
var userManager = new UserManager(userStore)
{
UserTokenProvider = new DataProtectorTokenProvider<User>(provider.Create("EmailConfirmation"))
};
关于最后一个问题,如果您使用的是 EntityFramework(或任何支持 SecurityStamps 的实现),是的,您会受到保护。 What is ASP.NET Identity's IUserSecurityStampStore<TUser> interface? 是了解 SecurityStamps 的良好入门参考。