用户名+ [空格]导致login.aspx重定向,但Identity.IsAuthenticated为TRUE

时间:2014-04-28 10:13:10

标签: c# asp.net active-directory forms-authentication

我有一个导航控件,仅显示在母版页上的经过身份验证的用户。这通过测试显示

System.Web.HttpContext.Current.User.Identity.IsAuthenticated == true

我正在使用具有Active Directory成员身份和登录控制的表单身份验证。

如果我使用带有空格的用户名登录...'用户名'页面返回到返回页面302,然后直接发送回login.aspx ...但奇怪的是加载登录时。 aspx页面第二次,IsAuthenticated仍然是真的。

这意味着我们的登录页面错误地显示了导航...

所以现在我被重定向到登录界面,即使IsAuthenticated是真的,有人可以解释为什么会这样吗?

显然用户名中的空格是错误的,但我想确保用户不会遇到这种情况。

此代码适用于所有其他方案。

2 个答案:

答案 0 :(得分:2)

你是对的chrfin ...我在登录控件上找到了一个名为OnLoggingIn的方法...我只是用一个修剪设置了自己的用户名并且效果很好..谢谢

protected void Login1_OnLoggingIn(object sender, System.Web.UI.WebControls.LoginCancelEventArgs e) 
    {
        Login1.UserName = Login1.UserName.Trim();
    }

答案 1 :(得分:0)

这不是您要问的问题的解决方案,但仍可能为您解决,无论如何应该以IMO方式完成:

为什么在处理用户名之前没有将Trim应用于用户名?

username = username.Trim();

这应该删除开头和结尾处的任何空格,因此不会发生有问题的情况。