我想在MVC 4代碼優先應用程序中使用我自定義的用戶表。我定義提前用戶表在我的數據庫方面:如何在MVC 4中登錄我的自定義用戶表?
public class MyDatabase : DbContext
{
public DbSet<User> UserSet { get; set; }
public DbSet<News> NewsSet { get; set; }
...
}
模式是這樣的:
public class User
{
[Key]
public int Id{ get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Name { get; set; }
public string SurName { get; set; }
...
}
當應用程序啓動時,它調用此:
WebSecurity.InitializeDatabaseConnection("MyDatabase", "Users", "Id", "UserName", autoCreateTables: true);
在控制器我用添加(實體)保存用戶實體。保存後我想登錄用戶。但它不起作用:
[HttpPost]
public ActionResult Register(User user)
{
var result = MyService.SaveUser(user);
WebSecurity.Login(result.UserName, result.Password, true);
return RedirectToAction("Index", "Profile", new { id = result.Id });
}
保存用戶後,它的數據存儲在我的數據庫中,但它無法登錄。我該怎麼辦?
編輯:
那麼,是否可以保存用戶實體與我的業務方法?或者我必須只用 WebSecurity.CreateUserAndAccount()來做到這一點?
如果我可以使用我自己的保存方法,如何在數據庫中保存密碼?
**不這樣做**。千萬不要將密碼作爲純文本存儲在數據庫中。使用鹽漬散列。這實際上很難做到 - 使用內置的成員系統來代替。 –
如果我將密碼存儲在數據庫中作爲散列代碼,會問題解決嗎? –
看看這篇關於安全性的文章:http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database並查看http://security.stackexchange.com/。 – Syneryx