Shi*_*mmy 26 asp.net httpcontext iidentity custom-membershipprovider
嗨,我使用自定义MembershipProvider.
我想知道应用程序场景中的当前用户名,但是当我尝试访问HttpContext.Current.User.Identity.Name时,它总是返回string.Empty.
if (Membership.ValidateUser(tbUsername.Text, tbPassword.Text))
{
FormsAuthentication.SetAuthCookie(tbUsername.Text, true);
bool x = User.Identity.IsAuthenticated; //true
string y = User.Identity.Name; //""
FormsAuthentication.RedirectFromLoginPage(tbUsername.Text, cbRememberMe.Checked);
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
blo*_*art 34
FormsAuthentication.SetAuthCookie(tbUsername.Text, true);
bool x = User.Identity.IsAuthenticated; //true
string y = User.Identity.Name; //""
Run Code Online (Sandbox Code Playgroud)
您遇到的问题是此时您只设置了身份验证cookie,在表单身份验证模块中创建的IPrincipal将不会发生,直到有新请求 - 所以此时HttpContext.User处于一个奇怪的状态.一旦重定向发生,那么因为它是来自浏览器的新请求,所以在您到达页面并创建正确的用户对象之前将读取cookie.
Cookie仅在请求完成后在浏览器上设置.
另外,RedirectFromLoginPage无论如何都会创建表单身份验证cookie,您无需手动执行此操作
小智 23
请尝试 System.Web.HttpContext.Current.Request.LogonUserIdentity.Name而不是User.Identity.Name.它对我有用.
值的HttpContext.Current.User.Identity.Name设置是通过调用来设置的RedirectFromLoginPage.HttpContext.Current.User.Identity.Name一旦重定向到新页面,您就可以获得当前用户ID .我不确定为什么你需要在这个上下文中通过User属性访问用户名,你不能只使用tbUsername.Text中包含的值吗?
| 归档时间: |
|
| 查看次数: |
75689 次 |
| 最近记录: |