问题标签 [custom-membershipprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1152 浏览

asp.net-mvc-3 - 在 IIS 7.0 中使用自定义 MembershipProvider 和 Roleprovider

我正在编写一个 ASP.NET MVC 3 网站。这是我的自定义 MembershipProvider(仅 ValidateUser 实现):

和我的 Roleprovider(仅实现 GetRolesForUser)

我的 web.config 部分

登录操作:

所以问题是为什么当我在 IIS 7.0 上发布站点时Membership.ValidateUser(username, password) 总是返回 false?它在本地 asp.net 开发服务器上正常工作。与 MSSQL Server 的连接是否正常(我可以获取任何数据并在网站部署时显示)?没有异常发生,只是总是返回 false ......

0 投票
0 回答
3485 浏览

asp.net-mvc-3 - 提供的用户名或密码不正确。在 MVC 3 互联网应用程序中

我有一个“ Internet 应用程序”-“一个默认的 ASP.NET MVC 3 项目,带有一个使用表单身份验证的帐户控制器。 ”称为MyMv3App我使用 Ctrl + F5 在IIS Express中运行该站点,然后转到 localhost:10382/Account/Register 并创建一个用户“ test1 ”。创建用户后,我将被重定向到主页。我注销。然后我转到 localhost:10382/Account/LogOn 并输入用户“test1”的用户名和密码,然后单击“登录”按钮,用户就登录了。很酷,到目前为止一切正常!

接下来,我添加了一个新的C#类库”项目并将其命名为MyCustomMembershipProvider。然后我从这里下载ProviderToolkitSamples.msi http://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx,运行 msi 安装程序,然后转到文件夹C:\Program Files (x86 )\ASP.NET Provider Toolkit SQL Samples安装所有文件。然后,我将这些文件添加到我刚刚创建的 C# 类库项目 MyCustomMembershipProvider、SQLMembershipProvider.csSecUtil.csSqlConnectionHelper.csSR.cs. (我需要所有这些文件,否则 C# 类库项目 MyCustomMembershipProvider 将无法编译)。然后我向 C# 类库项目 MyCustomMembershipProvider添加对System.configurationSystem.WebSystem.Web.ApplicationServices的引用。然后我构建项目,然后我转到 MyMvc3App 并添加对 MyCustomMembershipProvider 项目的引用。

注意:忘了提到我将项目 MyCustomMembershipProvider 中所有四个文件的命名空间更改为“命名空间 MyCustomMembershipProvider”,并且我将类名重命名为 MyCustomMembershipProvider。而且在 SQLMembershipProvider.cs 第 110 行中,我将其从 name = "SqlMembershipProvider"; 更改为 名称 = "MyCustomMembershipProvider";

接下来我更改 web.config 文件成员资格部分:

对此:

整个 web.config 现在看起来像这样:

现在我做了与第一段完全相同的事情;我转到 localhost:10382/Account/Register 并创建一个用户,这次我将用户称为“ test2 ”。创建用户后,我将被重定向到主页。我注销。然后我去 localhost:10382/Account/LogOn 再次登录并输入用户“ test2 ”的用户名和密码,然后单击“登录”按钮,我收到错误消息:

登录失败。请更正错误并重试。提供的用户名或密码不正确。

为什么?我错过了什么?除了第110 行 SQLMembershipProvider.cs 中的命名空间和名称变量之外,我没有触及任何东西。

我试图理解为什么,所以我搜索了一下,发现添加 machineKey 元素可能有效。所以我去了这个网站http://www.developmentnow.com/articles/machinekey_generator.aspx并生成了一个 ASP.NET 2.0 machineKey 并将其复制粘贴到 web.config 的 system.web 元素中:

我再次做了和以前一样的事情;我去 localhost:10382/Account/Register 并创建一个用户,这次我调用用户“ test3 ”。创建用户后,我将被重定向到主页。我注销。然后我转到 localhost:10382/Account/LogOn 并输入用户“ test3 ”的用户名和密码,然后单击“登录”按钮和 BAM!用户再次登录!?

为什么我必须在 web.config 中使用生成的验证密钥和解密密钥手动配置 machineKey,以便 MyCustomMembershipProvider 能够使用登录页面?据我所见,没有一篇文章/页面/博客谈到将 machineKey 元素添加到您的 web.config 以使您的自定义会员提供程序能够工作!

更新 1:添加 hashAlgorithmType="SHA1" 也可以:

有趣的是,MSDN 说 SHA1 是默认值!?

hashAlgorithmType 可选字符串属性。指定用于散列密码值的加密算法的名称。此属性的值对应于 cryptoNameMapping 配置部分中 nameEntry 元素的 name 属性。有关指定自定义哈希算法的信息,请参阅将算法名称映射到加密类。 默认值为 SHA1

更新 2:在阅读了 Microsoft 最新技术之后,我决定分享一些我发现的关于他们最新的会员资格提供商的发现;简单会员。我正处于我个人项目的阶段,我决定从我构建的 ASP.NET 2.0 天删除 CustomMembershipProvider 并改用 SimpleMembership 提供程序。为什么?好吧,您在 Jon Galloway 的以下博文中拥有您想知道的所有信息。我还添加了更多值得查看的资源链接。根据 Microsoft SimpleMembership 是 ASP.NET 2.0 Membership 的继承者。

http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and- asp-net-mvc-4-templates.aspx

http://mvccentral.net/Story/Details/tools/kahanu/securityguard-nuget-package-for-asp-net-membership

http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

http://blogs.msdn.com/b/rickandy/archive/2012/08/15/initializessimplemembership-attribute-and-simplemembership-exceptions.aspx

0 投票
2 回答
479 浏览

web-config - XML 客户成员资格提供程序类型 c#

这是我的班级声明:

和我的 web.config 片段:

从这一点开始,我不确定该怎么做。我已经进行了大量的谷歌搜索,但无法找出我收到以下错误的原因:

0 投票
1 回答
476 浏览

asp.net-mvc - 具有 UnitOfWork 模式的 ASP.NET MVC 3 自定义成员资格提供程序

我在使用 unitofwork 模式实现 CodeFirstMembership 提供程序时遇到问题。

当我尝试将 unitofwork 注入自定义 MemberShipProvider 类的构造函数时,总是收到错误:“没有为此对象定义无参数构造函数。”

这是代码:

这是 webconfig 部分:

问题是,“不确定”,MemberShipProvider 的默认实现是一个没有参数的构造函数,我不知道如何将我的 unitofwork 类注入到这个提供者类中。

有人可以帮助我吗?

0 投票
1 回答
1026 浏览

asp.net-membership - 如何使用 MembershipProvider 中的内置密码加密?

我正在编写一个自定义 MembershipProvider。当然,我想加密用户创建的密码。我认为.NET 有加密密码的东西。它是什么以及如何使用它?该输出的字符串大小是多少?我之前写过会员提供者,但只是为了验证用户是否有效。这是我第一次需要添加用户注册和登录。

我确信我没有使用正确的搜索词,但谷歌并没有向我展示任何对我有价值的东西。

0 投票
2 回答
2916 浏览

asp.net-mvc - 如何让 RoleProvider 工作?

这是一个 MVC 3 项目。只是为了测试,我有

我在 web.config 中注册它。然后,如果我配置标准的 SqlMemberShipProvider,类似以下内容将导致我的 GetRolesForUser 触发。

但是,我不想使用标准的 SqlMemberShipProvider。我通过自己的 AuthorizeAttribute 定义如下,只是为了测试:

现在,以下内容将不再导致 MyRoleProvider.GetRolesForUser 触发。

以上将触发 MyAuthorize.AuthorizeCore 和 MyAuthorize.OnAuthorization 但不会触发 MyRoleProvider 中的方法。MemberShipProvider、RoleProvider 和 AuthorizedAttribute 是什么关系?何时定义或配置这些关系?

谢谢。

0 投票
1 回答
643 浏览

asp.net-mvc-3 - HttpContext.User 可以在哪里设置?

环境:MVC3 SqlMemberShipProvider

我加了一个空

在 Global.asax.cs 的 MvcApplication 类中并在那里放置一个断点。每次访问页面时都会触发它。发送者是 MvcApplication 类型,它有一个User属性和一个Context属性。

如果我没有登录,则UserContext .User 为空。

如果我已登录,则UserContext .User 将设置为包含我登录名的 GenericPrincipal。

因此,似乎 SqlMemberShipProvider (如果不是谁)正在设置 User 对象。我可以知道这是如何/在哪里完成的吗?

谢谢。

0 投票
2 回答
11051 浏览

asp.net - 如何在没有登录控制的情况下使用表单身份验证?

如何在没有登录控制的情况下使用表单身份验证。我不想在我的站点中使用 asp.net 登录控制。但我必须实现表单身份验证并验证数据库中的用户。

0 投票
1 回答
802 浏览

c# - 使用 Castle 在自定义会员提供程序中进行属性注入

到目前为止,在阅读有关向自定义会员提供程序注入的可能性时,我发现了两种可能的方法:

一个如下:http ://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html

在这里,作者基本上建议注册您的自定义提供程序,然后为成员资格设置一个相当有问题的 Windsor 适配器(我真的不喜欢它使用它从中获取的容器来实例化您的提供程序的方式HttpApplication,它最终与 Windsor 适配器一起包装)。

这是另一个类似的选项:http ://code.google.com/p/webdotnet/source/browse/trunk/Steeg.Framework/Web/Security/MemberShipProvider.cs?r=2

您只需在其中覆盖Initialize()并手动实例化依赖项。至少在第一个中,您不需要手动实例化依赖项(除了提供者本身)。

然后有一些建议使用某种服务定位器(MVC 或其他)

然后我遇到了 ninjectMembership.Provider使用类似_kernel.Inject(Membership.Provider). 这更接近我想要的,保留了最初吸引我使用 DI 的组合根概念。

如何使用城堡获得类似的结果?

更新:显然这与生命周期管理有关。 使用 Ninject 将存储库注入自定义成员提供程序

那我应该选择#1吗?至少我自己实例化了提供者。所以生命周期管理不应该是一个问题。

0 投票
2 回答
730 浏览

azure - Azure ACS、WIF 3.5、Asp.Net 3.5 自定义成员资格提供程序和 IsAuthenticated

按照本指南中的步骤使用 Azure ACS,我通过 Facebook 配置和验证了一个可用的 Azure ACS 服务,重定向回在我的开发服务器上运行的网站。

身份验证成功后,Azure ACS 将重定向回我的本地开发网站,并且 IsAuthenticated 标志为真,但是我想仅当来自声明的电子邮件也存在于我的本地数据库中时,通过检查/调用将 IsAuthenticated 标志设置为真自定义 MembershipProvider。如果索赔中的电子邮件不存在,我想将客户重定向到注册页面。一旦注册并通过身份验证,我想将 IsAuthenticated 标志设置为 true。

目前,一旦通过 Facebook 和 AzureACS 进行身份验证,用户就可以请求安全页面,例如 ViewAccountBalance.aspx,即使该帐户不存在,因为开箱即用的 IsAuthenticated 标志为 true。有兴趣了解其他人做了什么以及最佳实践是什么。