ASP.NET 身份:定制店
ASP.NET Identity: Custom stores
我正在尝试使用 N 层架构和自定义 ASP.NET 身份服务和存储库创建 ASP.NET MVC 项目。我已经实现了自定义 UserStore
UserStore: UserIUserStore<User>, IUserPasswordStore<User>, IUserRoleStore<User>, IUserLoginStore<User>, IUserEmailStore<User>
我已经实现了注册登录。现在我想通过社交网络实现登录,但我遇到了困难。
public class User : IUser<string>
{
[Required]
public string Id { get; set; }
[Required]
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
public string PasswordHash { get; set; }
public virtual ICollection<Role> Roles { get; set; }
public virtual ICollection<UserLoginInfo> Logins { get; set; }
}
UserLoginInfo 是 sealead class 在 IUserLoginStore 中用于登录信息。但是,如果我想添加迁移,我会收到此错误:
NtierMVC.Repositories.UserLoginInfo: : EntityType 'UserLoginInfo' has no key defined. Define the key for this EntityType.
Login: EntityType: EntitySet 'Login' is based on type 'UserLoginInfo' that has no keys defined.
我试图找到任何解决方案如何使用外键扩展登录 table 到用户(比如如果您使用默认用户存储)但没有找到 none。有什么想法吗?
感谢您的帮助。
嗯,我用自定义登录解决了 class。
public class ExternalLogin
{
public string UserId { get; set; }
[Key, Column(Order = 0)]
public string LoginProvider { get; set; }
[Key, Column(Order = 1)]
public string ProviderKey { get; set; }
public UserLoginInfo GetUserLoginInfo()
{
return new UserLoginInfo(LoginProvider, ProviderKey);
}
}
public class User : IUser<string>
{
// user properties
public virtual ICollection<ExternalLogin> Logins { get; set; }
}
我正在尝试使用 N 层架构和自定义 ASP.NET 身份服务和存储库创建 ASP.NET MVC 项目。我已经实现了自定义 UserStore
UserStore: UserIUserStore<User>, IUserPasswordStore<User>, IUserRoleStore<User>, IUserLoginStore<User>, IUserEmailStore<User>
我已经实现了注册登录。现在我想通过社交网络实现登录,但我遇到了困难。
public class User : IUser<string>
{
[Required]
public string Id { get; set; }
[Required]
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
public string PasswordHash { get; set; }
public virtual ICollection<Role> Roles { get; set; }
public virtual ICollection<UserLoginInfo> Logins { get; set; }
}
UserLoginInfo 是 sealead class 在 IUserLoginStore 中用于登录信息。但是,如果我想添加迁移,我会收到此错误:
NtierMVC.Repositories.UserLoginInfo: : EntityType 'UserLoginInfo' has no key defined. Define the key for this EntityType.
Login: EntityType: EntitySet 'Login' is based on type 'UserLoginInfo' that has no keys defined.
我试图找到任何解决方案如何使用外键扩展登录 table 到用户(比如如果您使用默认用户存储)但没有找到 none。有什么想法吗?
感谢您的帮助。
嗯,我用自定义登录解决了 class。
public class ExternalLogin
{
public string UserId { get; set; }
[Key, Column(Order = 0)]
public string LoginProvider { get; set; }
[Key, Column(Order = 1)]
public string ProviderKey { get; set; }
public UserLoginInfo GetUserLoginInfo()
{
return new UserLoginInfo(LoginProvider, ProviderKey);
}
}
public class User : IUser<string>
{
// user properties
public virtual ICollection<ExternalLogin> Logins { get; set; }
}