在Microsoft将ASP.NET Identity framework更新到1.0.0-rc1版本后,我找不到任何文档或指南来使用它。github上有两个示例项目(一个、两个),但它们没有涵盖令牌、密码重置、角色等高级内容。
我相信唯一真正的文档就是这个论坛上的回复。自测试版以来,几个实体的结构也发生了变化。
我还可以处理一些更深入的信息,特别是
- 链接到您自己的自定义用户表
- 从控制器的User属性访问此自定义表
- 从authorize属性访问用户和角色,而不考虑实际登录方法(local、gmail、twitter等)
我添加了一个名为WebCustomUser的项目https://github.com/onybo/Asp.Net-Identity-RC1-sample-app/tree/master/WebApplication.
该项目演示了以下方法的使用:
- SignInAsync需要令牌确认
- ConfirmSignInTokenAsync
以实现用户帐户的令牌激活。
更新:该项目现在包括一个自定义实体框架模型,其中包含添加了电子邮件地址的自定义用户(仅作为示例)。
包含两个图表的建模项目显示了ASP.NET标识中的一些新类,该项目现在位于一个单独的解决方案中,以便可以在专业SKU中打开主解决方案。
这是修改后的注册操作和激活操作。
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
// Create a profile, password, and link the local login before signing in the user
User user = new User(model.UserName);
var result = await new UserManager(IdentityManager).CreateLocalUserAsync(user, model.Password);
if (result.Success)
{
var token = Guid.NewGuid();
var tokenResult = await AuthenticationManager.RequireTokenConfirmationForSignInAsync(token.ToString(), user.Id, DateTime.Now.AddDays(2));
if (tokenResult.Success)
{
return RedirectToAction("Registered", "Account", new { userId = user.Id.ToString(), token = token.ToString() });
}
else
AddModelError(tokenResult, "RequireTokenConfirmation failed");
}
else
{
AddModelError(result, "Failed to register user name: " + model.UserName);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
[AllowAnonymous]
public async Task<ActionResult> Activate(string userId, string token)
{
var tokenResult = await AuthenticationManager.ConfirmSignInTokenAsync(token);
return RedirectToAction("Login", new {returnUrl="/home"});
}
您可以在这里找到标识库夜间构建的示例。