当前位置: 首页 > 编程语言 > C#

User.Identity.GetUserId是每次缓存还是从数据库中获取?分享

时间:2023-04-11 11:17:14 C#

User.Identity.GetUserId是缓存还是每次从数据库中获取?我正在使用ASP.NetMVC5,我在我的代码字符串中调用了这一行userId=User.Identity.GetUserId();ASP.NETMVC会在每次调用时从表中获取它还是将其缓存?登录时似乎缓存了id和用户名。我使用了SQLServerProfiler并在登录后运行User.Identity.GetUserId();身份系统不查询数据库。这是在loggin上进行的查询:execsp_executesqlN'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]作为[C21],[UnionAll2].[C22]作为[C22],[UnionAll2].[C23]作为[C23],[UnionAll2].[C24]作为[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(SELECTCASEWHEN([Extent2].[UserId]ISNULL)THENCAST(NULLASint)ELSE1ENDAS[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(NULLASint)AS[C2],CAST(NULLASvarchar(1))AS[C3],CAST(NULLASvarchar(1))AS[C4],CAST(NULLASvarchar(1))AS[C5],CAST(NULLASvarchar(1))AS[C6],CAST(NULLASvarchar(1))AS[C7],CAST(NULLASvarchar(1))AS[C8],CAST(NULLASvarchar(1))AS[C9]FROM(SELECTTOP(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]作为[PhoneNumberConfirmed],[Extent1]。[TwoFactorEnabled]作为[TwoFactorEnabled],[Extent1]。[LockoutEndDateUtc]作为[LockoutEndDateUtc],[Extent1]。[LockoutEnabled]作为[LockoutEnabled],[Extent1]。[AccessFailedCount]AS[AccessFailedCount],[Extent1].[UserName]AS[UserName]FROM[dbo].[AspNetUsers]AS[Extent1]WHERE[Extent1].[Id]=@p__linq__0)AS[Limit1]LEFTOUTERJOIN[dbo].[AspNetUserRoles]AS[Extent2]ON[Limit1].[Id]=[Extent2].[UserId]UNIONALLSELECT2AS[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(NULLASvarchar(1))AS[C2]、CAST(NULLASvarchar(1))AS[C3],CAST(NULLASvarchar(1))AS[C4],[Extent4].[Id]AS[Id1],[Extent4].[UserId]AS[UserId],[Extent4].[ClaimType]AS[ClaimType],[Extent4].[ClaimValue]AS[ClaimValue],CAST(NULLASvarchar(1))AS[C5],CAST(NULLASvarchar(1))AS[C6],CAST(NULLASvarchar(1))AS[C7],CAST(NULLASvarchar(1))AS[C8]FROM(SELECTTOP(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]INNERJOIN[dbo]].[AspNetUserClaims]AS[Extent4]ON[Limit2].[Id]=[Extent4].[UserId])AS[UnionAll1]UNIONALLSELECT3AS[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[用户名],CAST(NULLASvarchar(1))AS[C2],CAST(NULLASvarchar(1))AS[C3],CAST(NULLASvarchar(1))AS[C4],CAST(NULLASint)AS[C5],CAST(NULLASvarchar(1))AS[C6],CAST(NULLASvarchar(1))AS[C7],CAST(NULLASvarchar(1))AS[C8],[Extent6].[LoginProvider]AS[LoginProvider],[Extent6].[ProviderKey]AS[ProviderKey],[Extent6].[UserId]AS[UserId],[Extent6].[UserId]AS[UserId1]FROM(SELECTTOP(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]INNERJOIN[dbo].[AspNetUserLogins]AS[Extent6]ON[Limit3].[Id]=[Extent6].[UserId])AS[UnionAll2]ORDERBY[UnionAll2].[C3]ASC,[UnionAll2].[C1]ASC',N'@p__linq__0nvarchar(4000)',@p__linq__0=N'b73f9738-76ed-48d5-a8fd-cbf23a233fe9'查看Microsoft.AspNet.Identity.Core.dll的反编译源,可以看到它从当前身份userid,因此它不会从数据库中获取此信息。以上就是C#学习教程:User.Identity.GetUserId每次都是缓存还是从数据库中获取?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——publicstaticstringGetUserId(thisIIdentityidentity){if(identity==null)thrownewArgumentNullException(“身份”);ClaimsIdentityidentity1=identityasClaimsIdentity;如果(identity1!=null)返回IdentityExtensions.FindFirstValue(identity1,"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier");返回(字符串)空;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢