如何在ASP.NET MVC应用程序中附加自定义成员资格提供程序?

如何将自定义成员资格提供程序与ASP.NET MVC [Authorize()]属性绑定? 我已经通过一些关于如何创建自定义成员资格提供程序的教程进行了大肆宣传,但是我发现的有关如何将其连接到应用程序的所有信息似乎都围绕着常规的ASP.NET WebForms应用程序,这些应用程序看起来像是一块蛋糕

我对即将在ASP.NET MVC中发生的大量“魔法”感到失望,这很棒,但我习惯以WebForms方式插入内容,因此这种“它只是工作”的方法有点像为我弯腰。 我怎么知道什么时候我应该做重物,或者我应该只依靠它通过魔法发生?

我在哪里将我的提供商绑定到MVC应用程序? 我是否正确地假设它是通过[Authorize()]属性调用的,一旦我把它连接起来?

希望我可以在其他答案上增加一些额外的清晰度,因为它们实际上无法解释正在发生的事情,这对您的混淆无助。

首先,从你已经完成的事情的声音实现你的自定义提供程序,所以我只是抛出一些代码片段,这里不再详述任何进一步的细节:

using System.Web.Security; public class MyCustomMembershipProvider : MembershipProvider { public override bool ValidateUser(string username, string password) { if (username.Equals("BenAlabaster") && password.Equals("Elephant")) return true; return false; } /* Override all the other methods required to extend MembershipProvider */ } 

然后在web.config中配置提供程序,确保填充配置基本MembershipProvider的属性:

       

下一点,我认为你是过度思考,实际上与你的web应用程序的联系。 而在WebForms应用程序中,您必须自己编写其余的代码 – MVC框架为您完成剩下的工作 – 您需要做的就是将[Authorize]属性添加到您的操作方法中,框架将检查您是否’重新登录,如果没有重定向到登录页面。 登录页面将找到您的自定义提供程序,因为这是在web.config中配置的并将登录您的用户。您可以通过引用User对象从控制器访问有关登录用户的信息:

 public class WhateverController : Controller { [Authorize] public ActionResult WhateverAction() { ViewData["LoggedInAs"] = string.Format("You are logged in as {0}.", User.Identity.Name); Return View(); } } 

因此,此操作要求用户登录并将用户信息提供给要在页面上显示的Whatever / WhateverAction.aspx视图。

我的自定义成员资格提供程序在web.config中引用:

        

然后只使用静态Membership类。

你在这个自定义会员中有多少变化? 就像你改变表名一样? 你能记录用户和东西吗? 即你的自定义会员资格?

如果你改变了许多东西,比如你将角色表名改为不同的东西,那么你将不得不重写Authroize标签。

但是,如果您的自定义成员身份不起作用,那么您可能没有正确配置它,并且配置与webforms中的配置相同。 你只需要设置你的webconfig。