我正在使用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;那么为什么用户信息不可用?
非常感谢任何建设性的意见。
答案 0 :(得分:0)
原来这是我的总PEBKAC。我没注意到的是emailAddress字符串为null;并设置了用户名为null的auth cookie;造成所述问题。