我有一个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;
}
答案 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>
编辑:对不起,我搞砸了。出于某些原因,您登录后仍会显示匿名模板。