MVC5 WebSecurity,暂时使用辅助数据库

时间:2016-04-21 18:59:48

标签: c# asp.net-mvc asp.net-membership

我有两个MVC项目的解决方案。第一个是管理系统,第二个是承包商的门户。我想通过主应用程序管理门户的承包商登录。

两个项目的成员资格数据库在架构中是相同的(默认值)。我的想法是劫持主系统的Register操作,交换连接字符串,在其自己的数据库中注册承包商用户,然后将连接字符串交换回主要的。

我猜这不起作用,即基于WebSecurity.InitializeDatabaseConnection()只能被调用一次的事实。

因此我的问题是:如果我想调用WebSecurity.CreateUserAndAccount()方法但是将其指向与最初初始化的数据库不同的数据库,我该怎么做?

我查看了内置InitializeSimpleMembership过滤器的线索,但没有看到我正在寻找的路径。

这甚至是一种可行的方法吗?

或者,如果我可以按照默认情况下的相同方式获取密码,则看起来我可以手动将所需数据输入数据库。

1 个答案:

答案 0 :(得分:0)

看来我可以手动解决这个问题。根据{{​​1}}的msdn文档:

  

此方法在用户配置文件表中创建一个新条目,然后在成员资格表中创建相应的条目。成员资格条目的ID基于用户资料条目的ID。 (两个表中条目的ID匹配。)

https://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.createuserandaccount(v=vs.111).aspx

检查数据库模式显示我只需要两个表,这些字段是直截了当的。

要按照与WebSecurity.CreateUserAndAccount()相同的方式对密码进行哈希处理,我可以使用SimpleMembershipProvider方法。

这大大简化了基本帐户的创建,因为我不必背负帐户控制器,只需将这些直接写入数据库并称之为好(不管怎样,不需要验证令牌和单独使用)处理电子邮件通知)。在门户端,内置的SimpleMembershipProvider应该能够像往常一样处理所有事情。