加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:26:01 所属栏目:asp.Net 来源:网络整理
导读:我试图在我的MVC 4中首次使用SimpleMembership,而且我已经有了一个现有的数据库和基于它的EF5模型!我搜索了很多,但是我无法找到我如何在我的情况下使用它,也把所有东西都放在我自己的模型下。 如果有人能给我一个想法,那将是很棒的。 谢谢 解决方法 作
我试图在我的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打到一个页面才被触发,因为这是由属性装饰的。你可以在那里放一个断点,看看它在行动。

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

希望这可以帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读