我正在使用MVC4应用程序和现有数据库。我想使用在SimpleMembership MVC4中定义的默认登录和注册。
我正在使用包含EmployeID,Employename,密码,电子邮件等员工信息的表格...
在SimpleMembershipInitializer
我改变了
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
到我自己的:
WebSecurity.InitializeDatabaseConnection("HRContext", "Employee", "EmployeeId", "EmployeName", autoCreateTables: true);
并更改了AccountController
,但徒劳无功
我只想使用我的数据库和默认的注册/登录方法。我读了几个主题,但没有一个给我一个我需要的。
答案 0 :(得分:1)
您不能仅仅因为各种原因而更改表并希望它能够正常工作。事实上,除非你非常幸运,否则很可能根本无法工作,因为SimpleMembership有一个硬编码密码哈希算法,你无法覆盖它。因此,除非您的原始Web应用程序使用相同的散列算法(假设它根本使用了散列),否则它根本不会识别任何用户密码。
但更重要的是,您的Employee表可能不是SimpleMembership所期望的正确架构。同样,这在SimpleMembership中是硬编码的,而不是你可以改变的东西。 SimpleMembership将尝试创建自己的表并忽略您的密码和您想要的其他字段(除了用户名和用户ID,假设用户标识格式正确)
SimpleMembership确实提供了一种非常灵活的扩展默认表的方法,但是你可以使用它的基本凭据部分的模式。
如果您需要使用此现有系统,则必须使用旧版成员资格系统并创建自定义成员资格提供程序。关于如何执行此操作,Stack Overflow上已经有成百上千的问题和答案。