首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不使用Membership.GetUser()的情况下在ASP.NET成员中访问UserId?

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

Stack Overflow用户
提问于 2008-09-28 22:25:27
回答 10查看 48K关注 0票数 17

如何以ASP.NET成员身份访问UserId,而不使用ASP.NET Web应用程序项目中的Membership.GetUser(username)

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

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-10-02 08:10:22

我决定自己编写用户用户的身份验证(非常简单,但它是有效的),我早就应该这么做了。

我最初的问题是关于UserId的,它不是从以下网址获得的:

代码语言:javascript
复制
System.Web.HttpContext.Current.User.Identity.Name
票数 4
EN

Stack Overflow用户

发布于 2009-01-06 14:27:53

试试这个:

代码语言:javascript
复制
MembershipUser CurrentUser = Membership.GetUser(User.Identity.Name);
Response.Write("CurrentUser ID :: " + CurrentUser.ProviderUserKey);
票数 23
EN

Stack Overflow用户

发布于 2008-09-29 05:50:54

这样做的原因是为了在每次需要UserId时都保存一个数据库调用吗?如果是这样的话,当我使用ASP.NET MembershipProvider时,我通常会创建一个允许缓存该调用的自定义提供程序,或者一个可以缓存的实用程序方法。

如果您正在考虑将其放入配置文件中,我认为没有太多理由这样做,特别是因为它仍然需要数据库调用,并且除非您在那里使用自定义配置文件提供程序,否则它会添加解析UserId的处理。

如果您想知道他们为什么不实现GetUserId方法,原因很简单,因为您并不总是能保证该用户id将是一个GUID,就像在包含的提供程序中那样。

编辑:

请参阅提供link to downloading the actual source code for i.e. SqlMembershipProviderScottGu's article on providers

但真正要做的最简单的事情是在用户对象或实用程序类中使用GetUserId()方法,如果缓存/会话存在,则从缓存/会话中获取UserId,否则访问数据库,按用户名缓存它(或存储在会话中),然后返回它。

有关更多需要考虑的内容(但由于cookie大小限制,请非常小心):Forms Auth: Membership, Roles and Profile with no Providers and no Session

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/146896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档