【问题标题】:How to Implement ASP.Net Membership in MVC Project?如何在 MVC 项目中实现 ASP.Net 成员资格?
【发布时间】:2015-10-03 15:25:35
【问题描述】:

我是 ASP.NET Membership 的新手。我想在 ASP.NET MVC 项目中实现 ASP.NET Membership。我不确定这是否可能。

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

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

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

我找到了在 SQL Server 中创建 ASP.NET Membership 表的方法。

  1. 进入目录 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 点击
  2. aspnet_regsql.exe。您将看到以下屏幕。

但是你还记得每当我们创建带有身份的 MVC 应用程序时,它们就会提供内置的注册和登录功能(无需为此编写代码)是的,我也想要 ASP.NET 成员资格。

您的回答将是可观的! :)

提前致谢:)

【问题讨论】:

  • 我认为不自己编写 AccountController 类是不可行的

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


【解决方案1】:

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

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

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

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

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

因此,最终将 ASP.NET 成员资格集成到具有 Entity Framework 的现代 ASP.NET MVC 应用程序中确实需要大量工作。我不会为新项目这样做。对于新项目,请尝试使用OWIN

【讨论】:

  • 你好 qub1n.. 谢谢你的回答。真的不可能自动生成控制器并查看 asp.net 成员表到新的/现有的 mvc 应用程序中吗?
  • 如果可能的话,我不知道怎么做。但我想告诉你,即使你成功了,也将是问题的开始。
  • 嗨,我有一个类似的问题,我有一个基于 asp.net 成员的现有项目和另一个在 OWIN 中的项目。我的要求是登录第一个系统,当重定向到其他系统时,用户不必再次登录,是否有可能以某种方式实现?来自 aspnet 成员表的数据被迁移到新的 AspNet 表中,但不确定从哪里开始并重写代码以制作诸如共享“cookie”或共享“会话”之类的东西来提供该功能
  • 查看 Tomas 在 OWIN 上发布的链接。我最近从 MS 看到的更清晰和实用的解释之一。谢谢托马斯
【解决方案2】:

我是 ASP.NET Membership 的新手。

您提到的 ASP.Net 会员资格已有 10 多年的历史。微软已弃用它。这是历史 -

  1. ASP.Net Membershi Provider(你提到的)
  2. ASP.NET 通用提供程序
  3. 简单的会员提供者
  4. ASP.NET Identity(当前版本为 2)

Microsoft 正在向 ASP.Net Identity 发展。这就是为什么您找不到任何关于 MVC 和旧成员资格的文章。

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

ASP.NET MVC 5 Fundamentals by Scott Allen

ASP.NET identity from Adam Freeman's book

如何在 MVC 项目中实现 ASP.Net Membership?

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

【讨论】:

  • 你好 Win... 我说我是 asp.net 的新成员。但不是身份。我非常了解身份如何工作。但我想要一些我的自定义项目的 asp.net 会员资格。所以你能建议我如何在没有一行代码的情况下实现这个东西。
【解决方案3】:

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

2.在web.config中添加会员默认提供者

3.创建注册登录模型及其对应视图

4.AccountController

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

使用 Membership.validateUser(string username , string password) 来验证输入的凭据。

5.登录成功创建认证Cookie
创建票证 -> 使用 FormsAuthenticationTicket()
加密票证
创建新的 cookie
在 Response.Cokies 中添加这个 cookie

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多