2015-02-14 2 views

Antwort

4

Es scheint, dass die id zusammen mit der username zwischengespeichert werden, wenn Sie sich anmelden.

habe ich in Laufen User.Identity.GetUserId(); die Identität System gemacht keine fragt auf die Datenbank SQL Server Profiler und nach der Anmeldung verwendet.

Dies ist die Abfrage auf loggin gemacht:

exec sp_executesql N'SELECT 
    [UnionAll2].[C2] AS [C1], 
    [UnionAll2].[C3] AS [C2], 
    [UnionAll2].[C4] AS [C3], 
    [UnionAll2].[C5] AS [C4], 
    [UnionAll2].[C6] AS [C5], 
    [UnionAll2].[C7] AS [C6], 
    [UnionAll2].[C8] AS [C7], 
    [UnionAll2].[C9] AS [C8], 
    [UnionAll2].[C10] AS [C9], 
    [UnionAll2].[C11] AS [C10], 
    [UnionAll2].[C12] AS [C11], 
    [UnionAll2].[C13] AS [C12], 
    [UnionAll2].[C14] AS [C13], 
    [UnionAll2].[C1] AS [C14], 
    [UnionAll2].[C15] AS [C15], 
    [UnionAll2].[C16] AS [C16], 
    [UnionAll2].[C17] AS [C17], 
    [UnionAll2].[C18] AS [C18], 
    [UnionAll2].[C19] AS [C19], 
    [UnionAll2].[C20] AS [C20], 
    [UnionAll2].[C21] AS [C21], 
    [UnionAll2].[C22] AS [C22], 
    [UnionAll2].[C23] AS [C23], 
    [UnionAll2].[C24] AS [C24], 
    [UnionAll2].[C25] AS [C25] 
    FROM (SELECT 
     [UnionAll1].[C1] AS [C1], 
     [UnionAll1].[AccessFailedCount] AS [C2], 
     [UnionAll1].[Id] AS [C3], 
     [UnionAll1].[Email] AS [C4], 
     [UnionAll1].[EmailConfirmed] AS [C5], 
     [UnionAll1].[PasswordHash] AS [C6], 
     [UnionAll1].[SecurityStamp] AS [C7], 
     [UnionAll1].[PhoneNumber] AS [C8], 
     [UnionAll1].[PhoneNumberConfirmed] AS [C9], 
     [UnionAll1].[TwoFactorEnabled] AS [C10], 
     [UnionAll1].[LockoutEndDateUtc] AS [C11], 
     [UnionAll1].[LockoutEnabled] AS [C12], 
     [UnionAll1].[AccessFailedCount1] AS [C13], 
     [UnionAll1].[UserName] AS [C14], 
     [UnionAll1].[UserId] AS [C15], 
     [UnionAll1].[RoleId] AS [C16], 
     [UnionAll1].[UserId1] AS [C17], 
     [UnionAll1].[C2] AS [C18], 
     [UnionAll1].[C3] AS [C19], 
     [UnionAll1].[C4] AS [C20], 
     [UnionAll1].[C5] AS [C21], 
     [UnionAll1].[C6] AS [C22], 
     [UnionAll1].[C7] AS [C23], 
     [UnionAll1].[C8] AS [C24], 
     [UnionAll1].[C9] AS [C25] 
     FROM (SELECT 
      CASE WHEN ([Extent2].[UserId] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1], 
      [Limit1].[AccessFailedCount] AS [AccessFailedCount], 
      [Limit1].[Id] AS [Id], 
      [Limit1].[Email] AS [Email], 
      [Limit1].[EmailConfirmed] AS [EmailConfirmed], 
      [Limit1].[PasswordHash] AS [PasswordHash], 
      [Limit1].[SecurityStamp] AS [SecurityStamp], 
      [Limit1].[PhoneNumber] AS [PhoneNumber], 
      [Limit1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
      [Limit1].[TwoFactorEnabled] AS [TwoFactorEnabled], 
      [Limit1].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
      [Limit1].[LockoutEnabled] AS [LockoutEnabled], 
      [Limit1].[AccessFailedCount] AS [AccessFailedCount1], 
      [Limit1].[UserName] AS [UserName], 
      [Extent2].[UserId] AS [UserId], 
      [Extent2].[RoleId] AS [RoleId], 
      [Extent2].[UserId] AS [UserId1], 
      CAST(NULL AS int) AS [C2], 
      CAST(NULL AS varchar(1)) AS [C3], 
      CAST(NULL AS varchar(1)) AS [C4], 
      CAST(NULL AS varchar(1)) AS [C5], 
      CAST(NULL AS varchar(1)) AS [C6], 
      CAST(NULL AS varchar(1)) AS [C7], 
      CAST(NULL AS varchar(1)) AS [C8], 
      CAST(NULL AS varchar(1)) AS [C9] 
      FROM (SELECT TOP (1) 
       [Extent1].[Id] AS [Id], 
       [Extent1].[Email] AS [Email], 
       [Extent1].[EmailConfirmed] AS [EmailConfirmed], 
       [Extent1].[PasswordHash] AS [PasswordHash], 
       [Extent1].[SecurityStamp] AS [SecurityStamp], 
       [Extent1].[PhoneNumber] AS [PhoneNumber], 
       [Extent1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
       [Extent1].[TwoFactorEnabled] AS [TwoFactorEnabled], 
       [Extent1].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
       [Extent1].[LockoutEnabled] AS [LockoutEnabled], 
       [Extent1].[AccessFailedCount] AS [AccessFailedCount], 
       [Extent1].[UserName] AS [UserName] 
       FROM [dbo].[AspNetUsers] AS [Extent1] 
       WHERE [Extent1].[Id] = @p__linq__0) AS [Limit1] 
      LEFT OUTER JOIN [dbo].[AspNetUserRoles] AS [Extent2] ON [Limit1].[Id] = [Extent2].[UserId] 
     UNION ALL 
      SELECT 
      2 AS [C1], 
      [Limit2].[AccessFailedCount] AS [AccessFailedCount], 
      [Limit2].[Id] AS [Id], 
      [Limit2].[Email] AS [Email], 
      [Limit2].[EmailConfirmed] AS [EmailConfirmed], 
      [Limit2].[PasswordHash] AS [PasswordHash], 
      [Limit2].[SecurityStamp] AS [SecurityStamp], 
      [Limit2].[PhoneNumber] AS [PhoneNumber], 
      [Limit2].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
      [Limit2].[TwoFactorEnabled] AS [TwoFactorEnabled], 
      [Limit2].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
      [Limit2].[LockoutEnabled] AS [LockoutEnabled], 
      [Limit2].[AccessFailedCount] AS [AccessFailedCount1], 
      [Limit2].[UserName] AS [UserName], 
      CAST(NULL AS varchar(1)) AS [C2], 
      CAST(NULL AS varchar(1)) AS [C3], 
      CAST(NULL AS varchar(1)) AS [C4], 
      [Extent4].[Id] AS [Id1], 
      [Extent4].[UserId] AS [UserId], 
      [Extent4].[ClaimType] AS [ClaimType], 
      [Extent4].[ClaimValue] AS [ClaimValue], 
      CAST(NULL AS varchar(1)) AS [C5], 
      CAST(NULL AS varchar(1)) AS [C6], 
      CAST(NULL AS varchar(1)) AS [C7], 
      CAST(NULL AS varchar(1)) AS [C8] 
      FROM (SELECT TOP (1) 
       [Extent3].[Id] AS [Id], 
       [Extent3].[Email] AS [Email], 
       [Extent3].[EmailConfirmed] AS [EmailConfirmed], 
       [Extent3].[PasswordHash] AS [PasswordHash], 
       [Extent3].[SecurityStamp] AS [SecurityStamp], 
       [Extent3].[PhoneNumber] AS [PhoneNumber], 
       [Extent3].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
       [Extent3].[TwoFactorEnabled] AS [TwoFactorEnabled], 
       [Extent3].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
       [Extent3].[LockoutEnabled] AS [LockoutEnabled], 
       [Extent3].[AccessFailedCount] AS [AccessFailedCount], 
       [Extent3].[UserName] AS [UserName] 
       FROM [dbo].[AspNetUsers] AS [Extent3] 
       WHERE [Extent3].[Id] = @p__linq__0) AS [Limit2] 
      INNER JOIN [dbo].[AspNetUserClaims] AS [Extent4] ON [Limit2].[Id] = [Extent4].[UserId]) AS [UnionAll1] 
    UNION ALL 
     SELECT 
     3 AS [C1], 
     [Limit3].[AccessFailedCount] AS [AccessFailedCount], 
     [Limit3].[Id] AS [Id], 
     [Limit3].[Email] AS [Email], 
     [Limit3].[EmailConfirmed] AS [EmailConfirmed], 
     [Limit3].[PasswordHash] AS [PasswordHash], 
     [Limit3].[SecurityStamp] AS [SecurityStamp], 
     [Limit3].[PhoneNumber] AS [PhoneNumber], 
     [Limit3].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
     [Limit3].[TwoFactorEnabled] AS [TwoFactorEnabled], 
     [Limit3].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
     [Limit3].[LockoutEnabled] AS [LockoutEnabled], 
     [Limit3].[AccessFailedCount] AS [AccessFailedCount1], 
     [Limit3].[UserName] AS [UserName], 
     CAST(NULL AS varchar(1)) AS [C2], 
     CAST(NULL AS varchar(1)) AS [C3], 
     CAST(NULL AS varchar(1)) AS [C4], 
     CAST(NULL AS int) AS [C5], 
     CAST(NULL AS varchar(1)) AS [C6], 
     CAST(NULL AS varchar(1)) AS [C7], 
     CAST(NULL AS varchar(1)) AS [C8], 
     [Extent6].[LoginProvider] AS [LoginProvider], 
     [Extent6].[ProviderKey] AS [ProviderKey], 
     [Extent6].[UserId] AS [UserId], 
     [Extent6].[UserId] AS [UserId1] 
     FROM (SELECT TOP (1) 
      [Extent5].[Id] AS [Id], 
      [Extent5].[Email] AS [Email], 
      [Extent5].[EmailConfirmed] AS [EmailConfirmed], 
      [Extent5].[PasswordHash] AS [PasswordHash], 
      [Extent5].[SecurityStamp] AS [SecurityStamp], 
      [Extent5].[PhoneNumber] AS [PhoneNumber], 
      [Extent5].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
      [Extent5].[TwoFactorEnabled] AS [TwoFactorEnabled], 
      [Extent5].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
      [Extent5].[LockoutEnabled] AS [LockoutEnabled], 
      [Extent5].[AccessFailedCount] AS [AccessFailedCount], 
      [Extent5].[UserName] AS [UserName] 
      FROM [dbo].[AspNetUsers] AS [Extent5] 
      WHERE [Extent5].[Id] = @p__linq__0) AS [Limit3] 
     INNER JOIN [dbo].[AspNetUserLogins] AS [Extent6] ON [Limit3].[Id] = [Extent6].[UserId]) AS [UnionAll2] 
    ORDER BY [UnionAll2].[C3] ASC, [UnionAll2].[C1] ASC',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'b73f9738-76ed-48d5-a8fd-cbf23a233fe9' 
7

bei den dekompilierten Quellen Microsoft.AspNet.Identity.Core.dll suchen, können Sie sehen, dass es den Benutzer-ID aus den Ansprüchen der aktuellen abruft Identität. Also holt es diese Informationen nicht aus der Datenbank.

public static string GetUserId(this IIdentity identity) 
{ 
    if (identity == null) 
    throw new ArgumentNullException("identity"); 
    ClaimsIdentity identity1 = identity as ClaimsIdentity; 
    if (identity1 != null) 
    return IdentityExtensions.FindFirstValue(identity1, "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"); 
    return (string) null; 
} 
Verwandte Themen