使用MVC 4 SimpleMembership与现有数据库第一EF模型(Using MVC 4 S

2019-07-20 15:49发布

我试图用SimpleMembership在我的MVC 4,第一次和我已经有基于它创造了一个现有的数据库和模型EF5! 我搜索了很多,但我无法找到我怎么能在我的情况下使用它,也有在我自己的模型的一切。

这将是巨大的,如果有人可以给我一个想法如何做到这一点。

谢谢

Answer 1:

纯粹作为一个参照点,它可能是一个好主意,以创建一个ASP.NET MVC 4 Web应用程序项目的新的互联网应用程序模板(即通过文件>新建项目)。

如果你看看AccountController ,如@ zms6445说,这是装饰用InitializeSimpleMembership属性。 你可以找到在根目录中的过滤器文件夹中的文件InitializeSimpleMembershipAttribute.cs这个属性的实现。

在这里,这是拼图的缺失部分-你需要,使得其使用的挂钩现有数据库SimpleMembershipProvider 。 这是你需要的代码:

private class SimpleMembershipInitializer
{
    public SimpleMembershipInitializer()
    {
        try
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME", "USER_TABLE", "USER_ID_FIELD", "USER_NAME_FIELD", autoCreateTables: true);
            }
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException("Something is wrong", ex);
        }
    }
}

需要注意以下几点:

  1. CONNECTION_STRING_NAME是在你的web.config的ConnectionStrings条目-你不能在这里使用的模型连接字符串-在SimpleMembershipProvider不能识别的格式! 您需要指定一个System.Data.SqlClient连接字符串,如

    <添加名称= “CONNECTION_STRING_NAME” 的connectionString = “数据源= SERVER;初始目录=数据库;用户ID = USER;密码= PASSWORD;” 的providerName = “System.Data.SqlClient的”/>

  2. USER_TABLE是在你的数据库中的表来保存额外的用户信息,如名字,姓氏等,这是与通过USER_ID_FIELD自动生成的表。

  3. USER_ID_FIELD通常是用户表的主键。 它的类型必须为int

  4. USER_ID_NAME是对于用户来说,这可能是一个电子邮件地址的唯一名字。

  5. autoCreateTables设置为true ,以确保生成所需的SimpleMembership工作表,如果他们不存在。

当然,这个代码只得到,如果你通过打一个页面解雇AccountController ,因为这已经被装饰的属性。 你可以把一个断点在那里,看到它的行动。

这应该让你开始 - 互联网应用程序模板是一个非常不错的模板,如果你碰到困难跟随。

希望这可以帮助。



Answer 2:

在标签的appSettings你的web.config,添加行

<add key="enableSimpleMembership" value="true"/>

SimpleMembership是内置,从这里你只需要编写

[InitializeSimpleMembership]

你上面的公共类的AccountController:控制器

当你想强制用户登录在某一页你在页面控制器写

[Authorize]

这表将在数据库中自动生成。 如果您想更多的字段添加到这些表,您需要简单地google一下。

这里有一个链接以获取更多信息http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5- web的表单和-ASP净MVC-4-templates.aspx



文章来源: Using MVC 4 SimpleMembership with an existing database-first EF model