【问题标题】:ASP MVC User ProfilesASP MVC 用户配置文件
【发布时间】:2011-05-07 12:01:27
【问题描述】:

我过去做过 MVC,但我是 ASP 和 ASP MVC 的新手。到目前为止,我真的很喜欢 ASP MVC 为我提供的易用性,但我无法弄清楚如何更好地控制用户。默认情况下,MVC 提供了一个最小的用户注册表单。我环顾了很多,但我仍然有两个问题:

  1. 如何使用户数据库成为我项目中的本地数据库?我认为 SQLEXPRESS 用于存储用户值,这似乎是一个神奇的过程。我如何去魔法化这个?我想对这个数据库的位置有更多的控制。

  2. 这就引出了另一个问题:如何扩展用户?我一直在阅读个人资料,但我仍然对一些事情感到困惑。如何准备个人资料并将其与用户链接?什么用作外键?而且,在我的控制器中,我如何访问用户的各个部分,如用户名、电子邮件,甚至从配置文件中的名字、姓氏(尽管我猜有一次当我在本地拥有配置文件的数据库和用户的数据库时,我可以运行用于检索数据的 sql 命令)

我非常感谢一些指向正确资源和/或 ASP.NET 最佳实践的指针

【问题讨论】:

    标签: asp.net sql asp.net-mvc asp.net-membership user-profile


    【解决方案1】:

    我会先阅读这篇关于扩展 ASP.NET Membership API 的官方Microsoft article。它谈到了创建额外的表来存储有关用户的其他信息。

    会员数据库

    1. 如果您有一个包含所有其他网站信息的现有数据库,则可以运行 aspnet_regsql.exe 工具来生成必要的用户表。然后,您需要修改 web.config 并添加 SqlMembershipProvider 以及您的连接字符串。
    2. 如果您正在创建一个新项目并且没有数据库,请从一个已启用成员资格的新 MVC 项目开始。您的数据库将在首次使用时在 App_Data 文件夹中创建,您可以将其附加到您的 SQL/SQLEXPRESS 服务器。然后只需将连接字符串更改为使用数据库服务器而不是本地文件即可。

    创建其他表格

    这部分其实很简单,由几个简短的步骤组成:

    1. 创建一个新表,即 UserProfiles
    2. 添加一个uniqueidentifier 列作为您的主键,并向aspnet_Users 表添加一个外键
    3. 添加您要存储的任何其他字段(电话、地址、性别等)
    4. 如果您使用的是 LINQ-to-SQL 或实体框架,您只需将需要的表拖到设计器上,即可查询成员资格表。

    这里有一个使用示例

    将此 sn-p 添加到您负责个人资料/帐户信息的存储库中。

    public aspnet_User GetUser()
    {
        MembershipUser user = Membership.GetUser();
        return db.aspnet_Users.SingleOrDefault(u => u.UserId == user.ProviderUserKey);
    }
    

    然后在您的模型中,您可以获取用户并访问存储在您的 UserProfiles 表中的其他信息。

    AccountRepo accountRepo = new AccountRepo();
    aspnet_User user = accountRepo.GetUser();
    string Address = user.UserProfile.Address; // bingo!
    

    差不多就是这样!

    这显然是一个简单的例子,你应该检查用户是否为null,你还可以创建一个类来负责返回有关用户的必要信息,实现缓存等。

    【讨论】:

      【解决方案2】:

      我会从这里开始:

      还有一篇很棒的文章系列(18 篇文章!!!)来自 Scott Mitchell,4GuysFromRolla

      ASP.NET 成员模型被设计为具有可插入的体系结构。您可以编写最适合您需求的自己的 MembershipProvider 实现。

      即使您在网上找到的大多数示例都是关于 ASP.NET Web 表单的,但与 MVC 一起使用时也只有非常小的差异。

      【讨论】:

        【解决方案3】:

        如果您仍在寻找对此的深入了解,我刚刚发现在 MVC 4 WebPages 站点中,有一个称为 SimpleMembership 提供程序的提供程序。它为存储在网站上的用户、角色和会员信息的开发人员提供了更多控制权。更多在这里: http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-24
          • 2014-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多