23

我是 ASP.NET MVC4 的新手。我正在创建一个空的 MVC4 项目模板并尝试将 ASP.NET Membership Provider 添加到其中,但我不明白我该怎么做。我在 Google 中搜索,但所有演示都使用 Internet 应用程序项目模板。

我知道这个问题不好,但我已经花了两天时间。

请为此提供一些建议或教程。

更新

根据 Nesim Razon 的建议,我将表单身份验证部分从 MVC4 Web 应用程序(Internet 应用程序模板)复制并粘贴到我的空项目中。但现在我得到了一个例外

要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的一个实例。

[InitializeSimpleMembership]
public class HomeController : Controller
{

    public ActionResult Index()
    {
        WebSecurity.CreateUserAndAccount("Name", "Password"); // Exception is thrown from there.
        return View();
    }

}

我还在 Web.config 文件中添加了以下指令:

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

4 回答 4

31

安装它

您需要添加以下 Nuget 包:

添加对的引用

  • 系统事务

测试它

现在为了测试它,将以下内容添加到 web.config 文件(在 下system.web):

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>

添加以下连接字符串

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-UnitTestQueries.UI-20121105001038;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-UnitTestQueries.UI-20121105001038.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

我所做的是从 Internet 模板中复制控制器、模型、过滤器和视图,然后只修改名称空间等内容,直到您启动并运行它

这是结果(没有样式)

登录前

在此处输入图像描述

注册

在此处输入图像描述

登录

在此处输入图像描述

于 2012-11-10T20:39:19.957 回答
2

查看SimpleMembership、Membership Providers、Universal Providers 和新的 ASP.NET 4.5 Web 窗体和 ASP.NET MVC 4 模板,以获取有关在空模板中设置 SimpleMembership 所需的信息。

你我也想看看斯科特艾伦的非常好的帖子:

MVC4 AccountController 的风险

为 ASP.NET MVC 构建您自己的会员系统 - 第一部分

为 ASP.NET MVC 构建自己的会员系统 - 第二部分

于 2012-11-10T20:22:52.213 回答
0

如果您想使用 Universal Providers 而不是 MVC 4 Internet 模板中包含的 Simple Membership,您可以使用Mobile 模板创建一个新的 MVC 4 项目并复制 Account controller + views 并使用正确的 connectionString 和 Forms Auth 部分更新 web.config你应该很高兴。

于 2012-11-12T04:17:24.700 回答
0

ASP NET MVC 5 Web 应用程序中的简单成员关系

https://www.youtube.com/watch?v=BsKcVbsMn6w

一旦开发完成,在项目中实施用户身份验证确实很困难。在本视频中,我演示了如何在那些从一开始就没有实施身份验证的项目中有效地利用 Microsoft 简单成员资格功能。借助此功能,您可以在项目的任何阶段实现身份验证功能。

于 2014-11-12T03:11:20.497 回答