ASP.NET Forms Authentication在后续请求中返回空白identity.name

时间:2016-04-11 20:12:12

标签: c# asp.net webforms forms-authentication

我正在继承这个项目,因此有很多事情我不确定。我们正在复制以使用相同的功能集(同一客户端)创建新网站。这在他们当前的网站上按原样运行,所以我不确定我缺少什么。这是一个电子商务网站,其中结帐流程在另一台服务器上处理(例如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部分。实际经过身份验证的用户似乎没有问题。

0 个答案:

没有答案