GrZ*_*eCh 17 membership asp.net asp.net-membership
如何UserId在不使用Membership.GetUser(username)ASP.NET Web应用程序项目的情况下访问ASP.NET成员资格?
可以UserId包含在()Profile旁边的命名空间中吗?UserNameSystem.Web.Profile.ProfileBase
小智 23
试试这个:
MembershipUser CurrentUser = Membership.GetUser(User.Identity.Name);
Response.Write("CurrentUser ID :: " + CurrentUser.ProviderUserKey);
Run Code Online (Sandbox Code Playgroud)
Ted*_*Ted 13
您是否有理由在每次需要UserId时保存数据库调用?如果是这样,当我使用ASP.NET MembershipProvider时,我通常会做一个允许我缓存该调用的自定义提供程序,或者我可以缓存的实用程序方法.
如果你想把它放在Profile中,我没有太多理由这样做,特别是因为它仍然需要数据库调用,除非你在那里使用自定义配置文件提供程序,它还有额外的处理解析出UserId.
如果你想知道他们为什么不实行GetUserId方法,它只是因为你并不总是保证该用户ID将是一个GUID作为包括供应商.
编辑:
请参阅ScottGu关于提供程序的文章,该文章提供了下载SqlMembershipProvider的实际源代码的链接.
但要做到真正的最简单的事情是GetUserId()方法在用户对象,或实用类,你来自哪里,缓存/会话,如果有获取用户标识,否则访问数据库,通过用户名(或存储在会话)的缓存它,并返回它.
更多需要考虑的事项(但由于cookie大小限制而要非常小心):表单身份验证:成员身份,角色和配置文件,没有提供者和没有会话
我决定自己编写用户用户的身份验证(非常简单但有效),我很久以前就应该这样做。
我最初的问题是关于 UserId 的,它无法从以下位置获得:
System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46852 次 |
| 最近记录: |