我有两个MVC项目的解决方案。第一个是管理系统,第二个是承包商的门户。我想通过主应用程序管理门户的承包商登录。
两个项目的成员资格数据库在架构中是相同的(默认值)。我的想法是劫持主系统的Register操作,交换连接字符串,在其自己的数据库中注册承包商用户,然后将连接字符串交换回主要的。
我猜这不起作用,即基于WebSecurity.InitializeDatabaseConnection()
只能被调用一次的事实。
因此我的问题是:如果我想调用WebSecurity.CreateUserAndAccount()
方法但是将其指向与最初初始化的数据库不同的数据库,我该怎么做?
我查看了内置InitializeSimpleMembership
过滤器的线索,但没有看到我正在寻找的路径。
这甚至是一种可行的方法吗?
或者,如果我可以按照默认情况下的相同方式获取密码,则看起来我可以手动将所需数据输入数据库。
答案 0 :(得分:0)
看来我可以手动解决这个问题。根据{{1}}的msdn文档:
此方法在用户配置文件表中创建一个新条目,然后在成员资格表中创建相应的条目。成员资格条目的ID基于用户资料条目的ID。 (两个表中条目的ID匹配。)
检查数据库模式显示我只需要两个表,这些字段是直截了当的。
要按照与WebSecurity.CreateUserAndAccount()
相同的方式对密码进行哈希处理,我可以使用SimpleMembershipProvider
方法。
这大大简化了基本帐户的创建,因为我不必背负帐户控制器,只需将这些直接写入数据库并称之为好(不管怎样,不需要验证令牌和单独使用)处理电子邮件通知)。在门户端,内置的SimpleMembershipProvider应该能够像往常一样处理所有事情。