我是ASP.NET成员资格的新手。我想在ASP.NET MVC项目中实现ASP.NET成员资格。我不确定是否可能。
每当我们要在那时创建MVC应用程序时,我们找到了更改身份验证的选项(无身份验证,身份验证,组织等)。我已选择身份验证并在我的应用程序中获取这些表。 看起来很依旧。
但我不想要ASP.NET身份表和功能。
我想要ASP.NET成员资格表和功能(用户CRUD操作,分配角色,更改用户密码等)看起来附件。
我找到了在SQL Server中创建ASP.NET成员资格表的方法。
但是你还记得每当我们创建带有身份的MVC应用程序时它们都会提供内置的注册和登录功能(不需要为此编写代码)是的,我也想要ASP.NET成员资格。
你的回答会很明显! :)
提前致谢:)
答案 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年。微软已弃用它。这是历史 -
微软正在向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