【问题标题】:ASP.Net MVC 4 Simple Membership specify SchemaASP.Net MVC 4 简单成员指定架构
【发布时间】:2013-03-27 06:06:58
【问题描述】:

我正在尝试弄清楚如何设置 ASP.Net MVC 4 的简单成员资格。在我当前数据库中容纳用户的表具有与“dbo”不同的架构。初始化数据库连接时如何指定架构:

            WebSecurity.InitializeDatabaseConnection
            (
                connectionStringName: "GuessAListConnection",
                userTableName: "UserProfile",
                userIdColumn: "UserId",
                userNameColumn: "UserName",
                autoCreateTables: false
            );

没有架构选项。我尝试将架构附加到 userTableName ,但这会产生错误。有什么建议吗?

谢谢

汤姆

【问题讨论】:

  • 看看这个线程:stackoverflow.com/questions/6244131/…>

标签: authentication asp.net-mvc-4 simplemembership


【解决方案1】:

WebSecurity 将使用数据库用户的任何默认架构。无法指定我知道的不同架构。

【讨论】:

    【解决方案2】:

    如果您的用户/身份验证表在与 dbo 不同的架构(或数据库用户的任何默认架构)中,我找到了另一种解决方案,那就是使用视图。

    在我的数据库中,我的用户/身份验证表的范围为“安全”架构。我还有一个 Person 表所在的 Person 模式。我只在 Person 表中存储 FirstName、LastName。

    我创建了一个视图,它将所有表拉到一起进行身份验证,并返回以下字段:

    UserId、UserName、PersonId、FirstName、LastName、AuthenticationType、LastLoginDate、IsLockedOut

    在我的应用程序中,我可以通过多种不同的方式对一个人进行身份验证:Form、Windows、Facebook、Twitter 等。UserId、UserName 与不同的身份验证类型相关。

    这是我在 ASP.Net MVC 中的 UserProfile 类:

      [Table("__vwRegisteredUser")]
      public class UserProfile
      {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public String UserName { get; set; }
        public int PersonId { get; set; }
        public String FirstName { get; set; }
        public String LastName { get; set; }
        public String AuthenticationTypeName { get; set; }
        public Boolean IsLockedOut { get; set; }
        public DateTime LastLoginDate { get; set; }
    
        public int Id
        {
            get
            {
                return PersonId;
            }
        }
    
        public String Name
        {
            get
            {
                return String.Format("{0} {1}", FirstName, LastName);
            }
        }
    }
    

    请注意,我为 Table 属性使用了一个视图。我还将 PersonId 作为 Id 属性返回,并将 FirstName 和 LastName 连接在一起作为 Name 属性。 UserName 是从我的身份验证类型(Windows 用户名、电子邮件地址(如果我使用表单身份验证)或 Facebook 或 Twitter 返回的任何内容)返回的值。因此,我的 Security.Authentication 表中的 UserName 没有一致性。

    初始化数据库连接仍然需要一个表,以便 SimpleMembership 生成成员表。也许有一种方法可以创建一个自定义成员表,但我还没有想出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多