asp.net-mvc-4 – 使用MVC 4 SimpleMembership与现有的数据库优先EF模型

我试图在我的MVC 4中首次使用SimpleMembership,而且我已经有了一个现有的数据库和基于它的EF5模型!我搜索了很多,但是我无法找到我如何在我的情况下使用它,也把所有东西都放在我自己的模型下。

如果有人能给我一个想法,那将是很棒的。

谢谢

解决方法

作为参考点,创建ASP.NET MVC 4 Web应用程序项目(即通过文件>新项目)的新的Internet应用程序模板可能是个好主意。

如果您看到AccountController,就像@ zms6445所说,它使用InitializeSimpleMembership属性进行装饰。您可以在根目录中的Filters文件夹的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);
        }
    }
}

有些事情要注意:

> CONNECTION_STRING_NAME是您的web.config ConnectionStrings中的一个条目 – 您不能在此使用模型连接字符串 – SimpleMembershipProvider不会识别该格式!您需要指定一个System.Data.sqlClient连接字符串,例如

< add name =“CONNECTION_STRING_NAME”connectionString =“data source = SERVER; initial catalog = DATABASE; user id = USER; password = PASSWORD;” providerName =“System.Data.sqlClient”/>
> USER_TABLE是您的数据库中的表以容纳其他用户信息,例如名字,姓氏等。这通过USER_ID_FIELD链接自动生成的表。
> USER_ID_FIELD通常是您的Users表的主键。它必须是int类型。
> USER_ID_NAME是用户的唯一名称,可以是电子邮件地址。
> autocreateTables设置为true,以确保SimpleMembership工作所需的表不存在时创建。

当然,这个代码只有通过AccountController打到一个页面才被触发,因为这是由属性装饰的。你可以在那里放一个断点,看看它在行动。

这应该让你开始 – 互联网应用程序模板是一个很好的模板,如果你被卡住了。

希望这可以帮助。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....