我很难理解在我的身份服务器中为我的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。
如果它是一个公共属性,你可以做这样的事情(这是许多标识示例处理它的方式(。
var provider = new DpapiDataProtectionProvider("MyAppName");
var userManager = new UserManager(userStore)
{
UserTokenProvider = new DataProtectorTokenProvider<User>(provider.Create("EmailConfirmation"))
};
至于最后一个问题,如果您使用的是EntityFramework(或任何支持SecurityStamps的实现(,是的,您受到保护。ASP.NET Identity 的 IUserSecurityStampStore