在MVC5中创建用户和角色

时间:2014-08-02 21:26:42

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

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

现在我遇到的一件事是我在Initializer.cs文件中添加了正确的代码,但是当我的应用程序运行时,它首先进入家庭控制器,当我调试代码时,它永远不会打到我的初始化程序。因为在这一点上我无法访问有关我的DataContext的任何内容。我不确定要包含哪些代码,因为它跨越多个文件,或者如果我的描述足以理解,但我可以在需要时包含代码。

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

4 个答案:

答案 0 :(得分:0)

如果使用Entity Framework存储用户/角色,则可以为数据库设定种子

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

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

稍后您可以将此相同位置用于您可能需要执行的任何迁移。

答案 1 :(得分:0)

来自Microsoft的优秀文章涵盖了有关此主题的所有主要观点。

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

答案 2 :(得分:0)

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

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

该应用程序易于使用,您可以使用一个简单的工具来更新应用程序并将其添加到应用程序中,并跳过应用程序的这一部分,直到您真正需要它为止,并专注于更高效的事情。

答案 3 :(得分:0)

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

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

我将它包含在Application_Start()方法内的Global.asax.cs文件中,它完全符合我的目标。希望这有助于任何寻找类似事物的人。