繁体   English   中英

从身份恢复为成员资格并获得登录用户名的奇怪结果

[英]Reverted to Membership from Identity and getting strange result for logged in user name

使用VS2013 Update 1我创建了一个新的WebForms项目。 该项目使用“新”身份成员资格提供程序。 我不想使用它,所以我又回到了成员资格提供者(有关详细信息,请参阅Webforms HttpContext.Current.User.Identity.IsAuthenticated始终为true

一旦用户在我检查时进行了身份验证,我仍然必须有一些错误:

System.Web.HttpContext.Current.User.Identity.Name

我正进入(状态:

"/"

在此输入图像描述

结果而不是用户在登录时输入的名称:

Membership.ValidateUser(txtUserName.Text,txtPassword.Text)ie。 为什么我没有得到txtUserName.Text的值而不是/

我已经验证了SQL何时被执行了

 HttpContext.Current.User.Identity.Name

正在访问的是通过以下SQL返回预期值:

SELECT 
    [Limit1].[C1] AS [C1], 
    [Limit1].[UserName] AS [UserName], 
    [Limit1].[UserId] AS [UserId], 
    [Limit1].[Email] AS [Email], 
    [Limit1].[PasswordQuestion] AS [PasswordQuestion], 
    [Limit1].[Comment] AS [Comment], 
    [Limit1].[IsApproved] AS [IsApproved], 
    [Limit1].[IsLockedOut] AS [IsLockedOut], 
    [Limit1].[CreateDate] AS [CreateDate], 
    [Limit1].[LastLoginDate] AS [LastLoginDate], 
    [Limit1].[LastActivityDate] AS [LastActivityDate], 
    [Limit1].[LastPasswordChangedDate] AS [LastPasswordChangedDate], 
    [Limit1].[LastLockoutDate] AS [LastLockoutDate]
    FROM ( SELECT TOP (1) 
        [Extent1].[UserId] AS [UserId], 
        [Extent1].[UserName] AS [UserName], 
        [Extent1].[LastActivityDate] AS [LastActivityDate], 
        [Extent3].[Email] AS [Email], 
        [Extent3].[PasswordQuestion] AS [PasswordQuestion], 
        [Extent3].[IsApproved] AS [IsApproved], 
        [Extent3].[IsLockedOut] AS [IsLockedOut], 
        [Extent3].[CreateDate] AS [CreateDate], 
        [Extent3].[LastLoginDate] AS [LastLoginDate], 
        [Extent3].[LastPasswordChangedDate] AS [LastPasswordChangedDate], 
        [Extent3].[LastLockoutDate] AS [LastLockoutDate], 
        [Extent3].[Comment] AS [Comment], 
        1 AS [C1]
        FROM   [dbo].[Users] AS [Extent1]
        INNER JOIN [dbo].[Applications] AS [Extent2] ON [Extent1].[ApplicationId] = [Extent2].[ApplicationId]
        INNER JOIN [dbo].[Memberships] AS [Extent3] ON [Extent1].[UserId] = [Extent3].[UserId]
    )  AS [Limit1]

这是我的web.config:

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="MyApp2" />
  </providers>
</membership>
<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="MyApp2" />
  </providers>
</profile>
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
  <providers>
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="MyApp2" />
  </providers>
</roleManager>

因此问题“必须”是我在某处以某种方式引用了身份会员资格提供程序。 任何人都可以帮助我,因为我真的被卡住了。

我想一个相关的问题是,有没有关于如何将项目从Identity恢复到以前的会员系统的HOWTO?

编辑

在我将应用程序名称更改为“MyApp”之后,当我再次使用该应用程序再次使用该应用程序时,我认为它完全正常工作后,我回到旧的“坏”行为,我得到“/”作为用户名。 所以我将数据库更改为MyApp2以及web.config仍然没有区别。

我现在还包括数据库中表格的屏幕截图,以防这对任何事情都有帮助。 我真的需要弄清楚这一点,所以会欣赏任何见解。 我也很乐意根据需要提供其他诊断。 在此输入图像描述

那么它总是简单的解决方案不是吗?

事实证明,我没有在aspx:login中为我的登录页面放置我的ASPX代码。 这意味着cookie没有正确设置,因为我所做的只是Membership.RedirectFromLogin()。

所以,一旦我把东西放入aspx:登录一切都很顺利。 希望这有助于将来的其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM