ASP.Net成员身份和表单身份验证:User.Identity.IsAuthenticated为true,但GetMembership()和Identity.Name返回null

时间:2011-11-03 20:12:34

标签: asp.net asp.net-membership forms-authentication

我正在使用FormsAuth处理ASP.Net成员资格并遇到了一个奇怪的问题。这是我设置Auth cookie的代码:

FormsAuthentication.SetAuthCookie(emailAddress, true);
string returnUrl = Session["returnUrl"] + "";

returnUrl变量传递给页面HTML上的元刷新标记,因此重定向是客户端。我这样做是为了确保在重定向之前在浏览器中设置了auth cookie。

returnUrl是我为调试目的而设置的页面。它在ASPX中有以下代码

<%
    var user = System.Web.Security.Membership.GetUser();
 %>
 <%
    if (user != null)
   {%>
Name: <%=user.UserName%>
<%}
   else
   {%>
       No user found in session
    <%} %>
<br />
User.Identity.IsAuthenticated: <%=User.Identity.IsAuthenticated%><br />

User.Identity.Name: <%=User.Identity.Name%><br />

当我访问该页面时,IsAuthenticated为true,但用户和Indentity.Name值为null。我验证并设置了auth cookie;那么为什么用户信息不可用?

非常感谢任何建设性的意见。

1 个答案:

答案 0 :(得分:0)

原来这是我的总PEBKAC。我没注意到的是emailAddress字符串为null;并设置了用户名为null的auth cookie;造成所述问题。