用户登录后Asp.net登录状态不说退出

时间:2011-08-19 14:20:53

标签: c# asp.net

我有一个asp.net Web应用程序,允许用户登录和注销。当用户登录(没问题)时,它表示欢迎用户名,这很好。但旁边仍然说登录。任何人都可以帮我吗?我需要在登录时设置一些属性吗?谢谢你的帮助。

<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                    <AnonymousTemplate>
                        [ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a>
                        ]
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        <span class="bold">Welcome</span><span class="bold">
                            <asp:LoginName ID="HeadLoginName" runat="server" />
                        </span>! [
                        <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out"
                            LogoutPageUrl="~/" />
                        ]
                    </LoggedInTemplate>
                </asp:LoginView>

protected void LoginUser_Authenticate(object sender, AuthenticateEventArgs e)
    {
       SqlHelper userLogin = new SqlHelper();
        TextBox User = (TextBox) LoginUser.FindControl("UserName");
        TextBox Password = (TextBox) LoginUser.FindControl("Password");
        bool results = userLogin.UserLogin(User.Text, Password.Text);
        e.Authenticated = results;
    }

3 个答案:

答案 0 :(得分:0)

您有两个ID为HeadLoginStatus的控件。这有什么理由吗?其次,您是否尝试删除EnableViewState =“false”?

修改

尝试将启动页面更改为根目录中的页面(如果尚未更新)。看看这是否有所不同。

  

我似乎找到了问题......或者解决方案取决于你的方式   查看它。

     

我的启动页面设置为子目录中的页面而不是   根。我将启动页面更改为根目录中的页面(即   其中login.aspx存在),现在它按预期工作。我不这样认为   它本应该采取这样的行动。

答案 1 :(得分:0)

仍然不确定为什么它没有进行身份验证,但我找到了一个可行的方法 当他们点击退出时(我必须更改登录以在loginstatus上签名)执行此操作

if (Request.IsAuthenticated)
        {
          FormsAuthentication.SignOut();
          Session.Abandon();
          // clear authentication cookie
          HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
          cookie1.Expires = DateTime.Now.AddYears(-1);
          Response.Cookies.Add(cookie1);
          // clear session cookie (not necessary for your current problem but i would recommend you do it anyway)
          HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
          cookie2.Expires = DateTime.Now.AddYears(-1);
          Response.Cookies.Add(cookie2);

         Response.Redirect("~/");
        }   

答案 2 :(得分:-1)

删除Anynymoustemplate。从来没有听说过。它不应该存在。

<AnonymousTemplate>
 [ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a>
 ]
 </AnonymousTemplate>

编辑:对不起,我搞砸了。出于某些原因,您登录后仍会显示匿名模板。