我正在继承这个项目,因此有很多事情我不确定。我们正在复制以使用相同的功能集(同一客户端)创建新网站。这在他们当前的网站上按原样运行,所以我不确定我缺少什么。这是一个电子商务网站,其中结帐流程在另一台服务器上处理(例如checkout.domain.com),因此它将GUID值作为URL参数传递,因此它看起来像这样:http://checkout.domain.com/Checkout.aspx?u=f1a1b32d-38ae-4f5c-810e-4b9b8c1be448
Checkout.aspx
然后确定它是匿名用户还是已登录用户,将其登录(或设置Identity主体)并重定向。这是有效的,但重定向HttpContext.Current.User.Identity.Name
为空后除外。
以下是发生的事情:
if (Convert.ToBoolean(r["IsAnonymous"]))
{
FormsAuthentication.SignOut();
HttpContext.Current.User = new GenericPrincipal(new MyIdentity(r["Login"].ToString()), new string[0]);
Utility.AnonymousUser = true; // At this point User is set and the Identity.Name value is still present
}
else
{
FormsAuthentication.SignOut();
Session["CurrUser"] = null;
FormsAuthentication.SetAuthCookie(r["Login"].ToString(), false);
Utility.AnonymousUser = false;
}
string redirectUrl = string.Empty;
以下是MyIdentity
类供参考:
[Serializable, ComVisible(true)]
public class MyIdentity : IIdentity
{
public string AuthenticationType { get { return "Cookie"; } }
public bool IsAuthenticated { get { return false; } }
public string Name { get { return m_name; } }
public MyIdentity(string name) { m_name = name; }
private string m_name;
}
但是,一旦重定向到处理结帐的页面Identity.Name
再次为空。
有什么想法吗?感谢。
编辑:我应该注意,这个问题似乎只出现在上面的IsAnonymous
部分。实际经过身份验证的用户似乎没有问题。