我有一个导航控件,仅显示在母版页上的经过身份验证的用户。这通过测试显示
System.Web.HttpContext.Current.User.Identity.IsAuthenticated == true
我正在使用具有Active Directory成员身份和登录控制的表单身份验证。
如果我使用带有空格的用户名登录...'用户名'页面返回到返回页面302,然后直接发送回login.aspx ...但奇怪的是加载登录时。 aspx页面第二次,IsAuthenticated仍然是真的。
这意味着我们的登录页面错误地显示了导航...
所以现在我被重定向到登录界面,即使IsAuthenticated是真的,有人可以解释为什么会这样吗?
显然用户名中的空格是错误的,但我想确保用户不会遇到这种情况。
此代码适用于所有其他方案。
答案 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();
这应该删除开头和结尾处的任何空格,因此不会发生有问题的情况。