【问题标题】:Creating Users and Roles in MVC5在 MVC5 中创建用户和角色
【发布时间】:2014-08-08 05:47:00
【问题描述】:

我在尝试确定为 MVC 应用程序创建用户和角色的最佳位置时遇到了一些麻烦。基本上我想做的是创建一个管理员角色和一个在我的应用程序获取主控制器之前已经创建的用户角色。

现在我遇到的一件事是我在我的 Initializer.cs 文件中添加了正确的代码,但是当我的应用程序运行时它首先进入主控制器,当我调试代码时它从未命中我的 Initializer.cs在这一点上,我还没有访问任何关于我的 DataContext。我不确定要在其中包含哪些代码,因为它跨越多个文件,或者我的描述是否足以理解,但如果需要,我可以包含代码。

为了简短起见,我的目标是创建两个角色,并在它到达我的 HomeController 之前将用户添加到角色中。感谢您提供的任何帮助!

【问题讨论】:

    标签: c# asp.net-mvc asp.net-identity asp.net-roles


    【解决方案1】:

    如果您使用实体框架来存储用户/角色,您可以为数据库播种

    http://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx

    但更好的是编写一个安装控制器,您在部署时执行该控制器以播种您的管理员用户(并确保它仅在管理员用户不存在时运行) 您的安装脚本甚至可以自动调用此控制器

    稍后您可以使用这个相同的地方进行您可能需要进行的任何迁移。

    【讨论】:

    • 我有一个想法,我将尝试通过在返回主控制器视图之前调用方法来创建角色和用户。我不确定这是否是您的建议?我也想做种子方法,但我的问题是它永远不会在加载 HomeController 之前启动我创建的 Initialzer,所以它甚至无法访问它。我不确定我是否遗漏了什么。这有点令人困惑,因为我得到了预先制作的项目,所以我试图把它拼凑起来。
    • 如果您使用实体框架播种它“应该”在您使用它时自动播种。但更简单的方法是创建一个 deployController 只运行一次您需要的代码并手动调用它(或从部署脚本自动调用)
    【解决方案2】:

    Microsoft 有一篇很棒的文章,涵盖了有关该主题的所有要点。

    注意的要点是使用实体框架迁移和数据库种子方法,以及使用[Authorize(Roles = "exampleRole")] 指令。

    【讨论】:

      【解决方案3】:

      我要做的是看看这个:https://github.com/thinktecture/Thinktecture.IdentityManager

      它是一个您可以在本地运行的应用程序,只需配置您的数据库连接字符串,然后您就可以像过去一样使用 ASP.NET 网站管理工具向您的数据库添加用户和声明。

      该应用程序易于使用,然后您就有一个简单的工具来更新和添加用户到您的应用程序,并跳过应用程序的该部分,直到您真正需要它并专注于更高效的事情。

      【讨论】:

        【解决方案4】:

        好的,所以我找到了我想做的事情。我认为你们尝试做的事情比我需要使用的要复杂一些。

        using (var context = new DataContext())
        {
            context.Database.Initialize(force: true);
        }
        

        我将它包含在我的 Global.asax.cs 文件中的 Application_Start() 方法中,它完全符合我的要求。希望这对寻找类似东西的人有所帮助。

        【讨论】:

          猜你喜欢
          • 2019-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-24
          • 2013-07-08
          • 2010-12-15
          相关资源
          最近更新 更多