当前位置:  开发笔记 > 后端 > 正文

如何在不使用Membership.GetUser()的情况下访问ASP.NET成员身份中的UserId?

如何解决《如何在不使用Membership.GetUser()的情况下访问ASP.NET成员身份中的UserId?》经验,为你挑选了2个好方法。

如何UserId在不使用Membership.GetUser(username)ASP.NET Web应用程序项目的情况下访问ASP.NET成员资格?

可以UserId包含在()Profile旁边的命名空间中吗?UserNameSystem.Web.Profile.ProfileBase



1> 小智..:

试试这个:

MembershipUser CurrentUser = Membership.GetUser(User.Identity.Name);
Response.Write("CurrentUser ID :: " + CurrentUser.ProviderUserKey);



2> Ted..:

您是否有理由在每次需要UserId时保存数据库调用?如果是这样,当我使用ASP.NET MembershipProvider时,我通常会做一个允许我缓存该调用的自定义提供程序,或者我可以缓存的实用程序方法.

如果你想把它放在Profile中,我没有太多理由这样做,特别是因为它仍然需要数据库调用,除非你在那里使用自定义配置文件提供程序,它还有额外的处理解析出UserId.

如果你想知道他们为什么不实行GetUserId方法,它只是因为你并不总是保证该用户ID将是一个GUID作为包括供应商.

编辑:

请参阅ScottGu关于提供程序的文章,该文章提供了下载SqlMembershipProvider的实际源代码的链接.

但要做到真正的最简单的事情是GetUserId()方法在用户对象,或实用类,你来自哪里,缓存/会话,如果有获取用户标识,否则访问数据库,通过用户名(或存储在会话)的缓存它,并返回它.

更多需要考虑的事项(但由于cookie大小限制而要非常小心):表单身份验证:成员身份,角色和配置文件,没有提供者和没有会话

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有