如何在MVC项目中实现ASP.Net成员资格?

时间:2015-10-03 15:25:36

标签: asp.net-mvc visual-studio authentication authorization asp.net-membership

我是ASP.NET成员资格的新手。我想在ASP.NET MVC项目中实现ASP.NET成员资格。我不确定是否可能。

每当我们要在那时创建MVC应用程序时,我们找到了更改身份验证的选项(无身份验证,身份验证,组织等)。我已选择身份验证并在我的应用程序中获取这些表。 看起来很依旧。

enter image description here

但我不想要ASP.NET身份表和功能。

我想要ASP.NET成员资格表和功能(用户CRUD操作,分配角色,更改用户密码等)看起来附件

enter image description here

我找到了在SQL Server中创建ASP.NET成员资格表的方法。

  1. 转到目录C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319点击
  2. aspnet_regsql.exe的。您将看到以下屏幕。
  3. 但是你还记得每当我们创建带有身份的MVC应用程序时它们都会提供内置的注册和登录功能(不需要为此编写代码)是的,我也想要ASP.NET成员资格。

    你的回答会很明显! :)

    提前致谢:)

3 个答案:

答案 0 :(得分:1)

如果您真的想使用ASP.NET成员资格,最简单的方法是使用ASP.NET内置功能,因为您可以使用旧的ASP:NET作为ASP.NET MVC应用程序的一部分。

另一种方法是自己编写这些管理页面。它意味着编写控制器和视图。这种方法存在更多陷阱。

交易陷阱: 如果要将注册与另一个读/写操作组合到数据库的另一部分,您可能希望使用事务来保持数据库的一致性。但是您无法将ASP.NET成员函数与其他代码(ADO.NET,Linq-2-SQL或Entity Framework)相结合,因为数据库事务需要在一个数据库连接中继续进行。内置ASP.NET成员函数使用web.config中的连接字符串提供的自定义连接。因此,事务在两个连接(ASP.NET成员身份连接和您的连接)上执行,除非您为分布式事务配置服务器,否则它将起作用。托管服务提供商暂时不支持此功能。

最后,我通过从头开始重写成员资格提供程序来调用ASP.NET成员资格程序来解决这个问题。它解决了两个连接和分布式事务的问题。

实体框架陷阱: 您可能会在您的应用程序中使用Entity Framework。您可能需要申请某些业务层的成员资格。 EntityFramework不支持IDBConnection或DBConnection,但您需要提供EntityConnection。它意味着Entity Framework使用不同类型的ADO.NET连接。从实体框架调用ASP.NET成员资格存储过程不会为您提供返回代码。我通过creating wrapper in SQL server for every ASP.NET membership stored procedure解决了这个问题。

因此,最终使用Entity Framework将ASP.NET成员资格集成到现代ASP.NET MVC应用程序中真的是很多工作。我不会那样做新项目。对于新项目,请尝试使用OWIN

答案 1 :(得分:1)

  

我是ASP.NET成员资格的新手。

您提到的ASP.Net会员已超过10年。微软已弃用它。这是历史 -

  1. ASP.Net Membershi Provider(您提到过)
  2. ASP.NET Universal Providers
  3. 简单会员提供者
  4. ASP.NET Identity(当前版本为2)
  5. 微软正在向ASP.Net Identity迈进。这就是为什么你找不到任何关于MVC和旧会员资格的文章。

    由于您也是ASP.Net会员的新手,我个人建议学习ASP.Net Identity。这是免费课程和书籍 -

    ASP.NET MVC 5 Fundamentals by Scott Allen

    ASP.NET identity from Adam Freeman's book

      

    如何在MVC项目中实现ASP.Net成员资格?

    您可以使用ASP.Net Identity生成的 AccountController ,并自行将UserManager替换为Membership。

答案 2 :(得分:0)

步骤 1.注册数据库 .C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 aspnet_regsql

2.在web.config

中添加成员资格默认提供程序

3.创建注册和登录模型及其相应的视图

4.AccountController

使用Membership.CreateUser(字符串Username,string Password,string Email)来创建新用户。

使用Membership.validateUser(字符串用户名,字符串密码)来验证输入的凭据。

5.成功登录创建身份验证Cookie
创建票证 - >使用FormsAuthenticationTicket()
加密机票
创建新的cookie 在Response.Cokies中添加此cookie