gpt4 book ai didi

asp.net-membership - 具有自定义成员资格提供程序的 MVC 4 模板

转载 作者:行者123 更新时间:2023-12-04 18:47:26 25 4
gpt4 key购买 nike

我想要做的是使用 Visual Studio 2012 附带的默认 MVC 4 模板作为我新项目的基础。但是,我想用自定义成员资格提供程序替换 SQL 提供程序,以便我可以访问我的 RavenDB 来获取我的用户。我已经像以前一样实现了自定义提供程序,但是 WebSecurity 方法抛出了以下异常。

这行代码:

ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));



具体方法:

WebSecurity.GetUserId



正在抛出这个异常:

You must call the "WebSecurity.InitializeDatabaseConnection" method before you call any other method of the "WebSecurity" class. This call should be placed in an _AppStart.cshtml file in the root of your site.



现在我无法调用 InitializeDatabaseConnection,因为我的提供程序不是 SQL 提供程序。此方法需要一个 SQL 提供程序和一个 SQL 连接字符串。这是一个常见问题还是我遗漏了什么?为什么 WebSecurity 必须被初始化,为什么它期望只使用 SQL 提供程序进行连接?

我是否只需要更改代码即可不使用 WebSecurity 类?

我一整天都在做这件事,我很累。我希望我没有忽略一些简单的事情。也许再来一杯朗姆酒和可乐会有所帮助...

更新:08/19/2012

我反编译了 GetUserId 方法,发现它失败的唯一原因是 VerifyProvider 调用。
public static int GetUserId(string userName)
{
WebSecurity.VerifyProvider();
MembershipUser user = Membership.GetUser(userName);
if (user == null)
return -1;
else
return (int) user.ProviderUserKey;
}

private static ExtendedMembershipProvider VerifyProvider()
{
ExtendedMembershipProvider membershipProvider = Membership.Provider as ExtendedMembershipProvider;

if (membershipProvider == null)
throw new InvalidOperationException(WebDataResources.Security_NoExtendedMembershipProvider);

membershipProvider.VerifyInitialized();
return membershipProvider;
}

现在,它在 VerifyProvider 方法中失败的唯一原因是调用 VerifyInitialized,我无法在我的成员(member)资格提供者中覆盖它。此外,如果它没有调用我的提供程序,那么我不确定在处理 VerifyInitialized 时正在调用什么代码。
internal virtual void VerifyInitialized()
{
}

我正在删除 Web.Config 中的所有其他成员资格提供程序。至少我认为我是。这是入口。
<membership defaultProvider="RavenMembershipProvider">
<providers>
<clear />
<add name="RavenMembershipProvider" type="BigGunsGym.Infrastructure.Providers.RavenMembershipProvider" />
</providers>
</membership>

最佳答案

结果我的提供者继承自 SimpleMembershipProvider 而不是 ExtendedMembershipProvider。我认为可以,因为 SimpleMembershipProvider 继承了 ExtendedMembershipProvider 但它不起作用。

将我的提供者更改为从 ExtendedMembershipProvider 继承后,错误消失了。

关于asp.net-membership - 具有自定义成员资格提供程序的 MVC 4 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com