gpt4 book ai didi

asp.net-mvc - 在 MVC4 Web 应用程序中使用 ASP.NET SqlMembershipProvider 和 GUID UserID

转载 作者:行者123 更新时间:2023-12-04 02:56:39 25 4
gpt4 key购买 nike

我有一个现有的 ASP.NET Web 窗体网站,我正在升级到 ASP.NET MVC4 Web 应用程序。

看起来应该可以将我现有的成员(member)数据库与 MVC4 网络应用程序默认使用的 SimpleMembershipProvider 一起使用。

问题是 SimpleMembershipProvider 期望 UserId 列是 int 类型,而我现有的数据库使用 guid

这是我的 web.config 的相关部分:

<membership defaultProvider="SqlMembershipProvider">
<providers>
<remove name="SqlMembershipProvider"/>
<add
name="SqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Hashed"
applicationName="/"
maxInvalidPasswordAttempts="10"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
</providers>
</membership>

尝试更改密码,例如,我得到一个 RuntimeBinderException:

"Cannot convert type 'System.Guid' to 'int'".

我的主要问题是:理想情况下,我希望保持现有数据库完好无损,并配置 MVC 网络应用程序以使用它。如何配置我的 MVC4 网络应用程序以使用我现有的数据库(使用 GUID UserId's)作为成员数据库?

作为次要问题:我想我可以将 UserId 列更改为 int;有没有人预见到任何问题,或者知道解决这个问题的最佳方法?


这是我能找到的关于使用 GUID 类型的 UserId 的最佳线索:http://aspnet.uservoice.com/forums/41201-asp-net-mvc/suggestions/3573751-use-generic-types-for-userid-in-simple-membership-

最佳答案

我找到了解决方法:

  • 将提供程序类型改回 System.Web.Security.SqlMembershipProvider
  • 修改 AccountController 以使用 MembershipFormsAuthentication 类而不是 WebSecurity 类执行操作
  • AccountController 中删除了 SimpleMembershipProvider 属性

例如,验证登录并设置 cookie:

if (ModelState.IsValid && Membership.ValidateUser(model.UserName, model.Password)) 
{
FormsAuthentication.SetAuthCookie(model.UserName,false);
return RedirectToLocal(returnUrl);
}

关于asp.net-mvc - 在 MVC4 Web 应用程序中使用 ASP.NET SqlMembershipProvider 和 GUID UserID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575528/

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