我目前正在构建一个用于可视化和控制工业设施的ASP.NET MVC4 Web应用程序。现在是时候为了提供安全性而使用一些用户和角色管理。经过一段时间的调查,我认为最先进的方法是SimpleMembershipProvider。所以这是我的问题:出于兼容性和其他原因,我必须单独使用数据库中的现有表,因此我不能简单地集成SimpleMembership,指向我们的数据库并让它自己创建所需的表。我所拥有的只是现有的表格,通常如下所示:
ID (Integer)
UserName (String)
Passwort (String)
UserGroup (Integer) (this would be the equivalent to the role)
有没有办法使用SimpleMembership?或 - 如果不是 - 您将如何实现替代(可能是基于cookie)的授权类型,最好使用属性来检查用户是否基于例如授权进行授权。像IsLoggedIn和RequiredUserGroup(4)或类似的东西?
我真的很喜欢使用SimpleMembership机制,但我看不出它应该如何与给定的数据库字段一起使用。
非常感谢任何帮助!
祝你好运, 罗布
答案 0 :(得分:0)
您可以自定义 SimpleMembership 以包含应用所需的字段,如this article所示。 UserProfile 实体/表具有此定义的开箱即用。
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
按照参考文章中的说明,您可以轻松地将 UserGroup 属性添加到此表中。但是在 SimpleMembership 中,您不会将密码存储在 UserProfile 中。密码作为单向哈希存储在* webpages_Membership *表中,以及 SimplemMembershipProvider 的其他必需属性。
<强>更新强> 如果您需要保持现有架构和密码存储处理,最好的选择是create a custom membership provider as described in this tutorial。