在siteMap中正确模拟asp:Login的Logout功能

时间:2014-01-03 08:26:13

标签: c# html asp.net sitemap logout

正如标题所说,你如何在asp中正确实现/模拟Logout函数:登录到siteMapNode?

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

我能做的最好的就是:

<siteMapNode url="~/Login.aspx" title="Logout" roles="Maker, Admin, Approver" description="" />

但这只会将用户重定向到“登录”页面。当您按下Web浏览器上的“后退”按钮时,用户仍然登录到系统,这与使用正确的“注销”功能时不同。

2 个答案:

答案 0 :(得分:2)

您可以添加一个Logout.aspx页面,该页面终止用户的会话,然后重定向到登录页面,例如:

Session.Abandon();
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();

然后您的siteMapNode应该参考退出页面。

答案 1 :(得分:0)

您需要在所有用户页面中的页面加载事件内检查以下条件

If(!User.Identity.IsAuthenticated)
{
Response.Redirect("~/Login.aspx");
}

现在,如果您logout,请使用浏览器后退按钮或网址来显示此页面。如果您的loggin其他人转到login page.

,则允许使用该代码