Fra*_*nkO 26 c# asp.net asp.net-mvc-5 asp.net-identity
我是ASP.NET Identity框架的新手,我正在尝试做一些我以前在旧的FormsAuthentication框架中做的事情.
我想要做的是允许管理用户使用应用程序内现有的Register视图(或类似视图)创建新用户.一旦完成,我想关联该用户(可能使用生成的ID)与系统的其他区域.
如何访问调用UserManager.CreateAsync()时生成的ID?
编辑:我希望具有"管理"角色的现有用户在用户管理区域内从系统内创建用户.到目前为止,下面的答案解释了如何获取"当前"用户的ID,这不是我想要的.
Jel*_*sch 23
使用IdentityUser或使用继承自的类IdentityUser,使模型具有UserId属性.使用以下代码,将用户传递给方法,将填充Id.
var user = model.GetUser();
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
    result = UserManager.AddToRole(user.Id, "User");
该model.GetUser()返回的一个对象ApplicationUser或IdentityUser
public ApplicationUser GetUser()
{
    var user = new ApplicationUser
    {
        UserName = UserName,
        FirstName = FirstName,
        LastName = LastName,
        Email = Email,
        ...
    };
    return user;
}
mat*_*tt. 15
接受的答案对我来说并不清楚,所以我想我会分享这个.
如果查看IdentityUser类的源代码,您将找到以下内容.
public class IdentityUser : IdentityUser<string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>, IUser, IUser<string>
{
    /// <summary>
    ///     Constructor which creates a new Guid for the Id
    /// </summary>
    public IdentityUser()
    {
        this.Id = Guid.NewGuid().ToString();
    }
    ... code omitted
}
如您所见,在创建新IdentityUser实例时,构造函数会生成新的GUID并填充Id字段.
这意味着如果您创建派生类的新实例,例如ApplicationUser新的ID仍将自动为您生成.
因此,在检查用户是否已成功添加后,您可以安全地使用ApplicationUser类中的Id 进行数据关联.
例.
var user = new ApplicationUser
{
    UserName = "franko",
    FirstName = "Frank",
    LastName = "Ouimette",
    Email = "franko@emailservice.com"
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded){
    result = UserManager.AddToRole(user.Id, "User");
    // User added successfully, you can safely use the Id now.
    var id = user.Id;
}
对我有用的东西略有不同:
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
var user = new ApplicationUser() { Email = "informatyka4444@wp.pl", UserName = "informatyka4444@wp.pl" };
var result = manager.Create(user, "TestPass44!");
if (result.Succeeded)
{
    string newId = user.Id;
}
| 归档时间: | 
 | 
| 查看次数: | 42986 次 | 
| 最近记录: |