如何将一些字段/属性添加到默认身份验证用户配置文件?
例如,我想要包含用户电话号码和电子邮件地址。
用于创建数据库的所有默认属性存储/保存在哪里?
即,包括默认属性,如登录名和密码。现在我想为该配置文件添加更多属性,这些属性也将存储在数据库中。
答案 0 :(得分:1)
我建议使用内置的轻量级SimpleMembership授权。它将自动提供Asp.NET成员资格表和特定的UserProfile表来存储其他相关属性。
这是开箱即用的Visual Studio
的MVC 4互联网应用程序模板我建议如下:
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
public class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
using (var context = new UsersContext())
context.UserProfiles.Find(1);
if (!WebSecurity.Initialized)
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
}
这是从global.asax中的application_start方法初始化Internet应用程序上的simplemembership授权。
正如您所看到的,默认情况下,用于存储相关用户信息的表/类称为“UserProfile”。只需首先通过Entity Framework代码更改“UserProfile”(帐户模型)类,它将自动调整您的数据模型。
给出的例子:
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId{ get; set; }
public string UserName { get; set; }
//other relevant properties
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set;
//etc
}
我希望这些信息可以指出你正确的方向。如果您有任何评论,请随时提出。
答案 1 :(得分:0)
你可能想这样做:
public static class AuthManager
{
private static string CurrentUserKey = "CurrentUser";
public static User CurrentUser
{
get
{
if (HttpContext.Current.Request.IsAuthenticated == false) return null;
if (HttpContext.Current.Session[CurrentUserKey] != null)
return (User)HttpContext.Current.Session[CurrentUserKey];
var userName = HttpContext.Current.User.Identity.Name;
var user = SomeUserRepository.GetUserByName(userName);
HttpContext.Current.Session[CurrentUserKey] = user;
return user;
}
}
}