Asp.net 在浏览器中粘贴受限路径时表单身份验证不起作用

Asp.net 在浏览器中粘贴受限路径时表单身份验证不起作用,asp.net,Asp.net,我有一个使用内置表单身份验证的asp.net站点。站点有一个管理员页面,管理员等提升帐户使用该页面更新内容。管理页面位于根目录下一级。我使用“注销”按钮启动注销例程以终止会话,但如果我在注销后将管理文件的路径粘贴到浏览器中,我就可以访问此受限页面。如果在登录前粘贴路径,则会获得所需的行为,t登录控件如下所示 <asp:LoginView ID="LoginView1" runat="server"> <LoggedInTemplate> <d

我有一个使用内置表单身份验证的asp.net站点。站点有一个管理员页面,管理员等提升帐户使用该页面更新内容。管理页面位于根目录下一级。我使用“注销”按钮启动注销例程以终止会话,但如果我在注销后将管理文件的路径粘贴到浏览器中,我就可以访问此受限页面。如果在登录前粘贴路径,则会获得所需的行为,t登录控件如下所示

<asp:LoginView ID="LoginView1" runat="server">
    <LoggedInTemplate>
        <div style="float: left">
            <h2>
                Welcome
                <asp:LoginName ID="LoginName1" runat="server" />. <strong>You are logged in.</strong>
            </h2>
        </div>
        <div class="actionbuttons">
            <Club:RolloverButton ID="Logoutbtn" runat="server" Text="Logout" OnClick="Logoutbtn_Click" CausesValidation="false" />
        </div>
    </LoggedInTemplate>
    <AnonymousTemplate>
        <div class="actionbuttons">
            <Club:RolloverLink ID="Logintbtn" runat="server" Text="Login" NavigateURl="~/Login.aspx" CausesValidation="false" />
        </div>
    </AnonymousTemplate>
</asp:LoginView>
Default.aspx中的登录代码:

private bool IsAdmin;
protected void Page_Load(object sender, EventArgs e)
{
    string _iAm = Request.ServerVariables["AUTH_USER"].ToString();
    Session["iAm"] = _iAm;

    if (IsPostBack)
    {
        if (_iAm != string.Empty)
        {
            GetMemeberInfo(_iAm);
        }

    }
    IsAdmin = User.IsInRole("Administrators");
}

public void GetMemeberInfo(string userName)
{
    MemberIdByUserName getMyId = new MemberIdByUserName();
    Guid _myId = getMyId.GetMemberId(userName);
    Session["myId"] = _myId.ToString();
}
在注销事件时使用:

Session["iAm"]=Null;

将您的登录代码发布到页面加载事件您不能使用内置的
LoginView
控件而不是自己处理注销例程吗?@JWLim,表单身份验证由框架提供,为什么要发明轮子?@Risho
LoginStatus
控件默认情况下也在asp.net中提供。它根据用户是否登录,为您提供可自定义的
登录
链接和
注销
链接。如果您使用它,您就省去了编写易于出错的代码来处理注销例程的麻烦,就像您使用
Logoutbtn\u Click
@Risho抱歉,我在第一条评论中指的是
LoginStatus
控件一样。这就是它在代码中的样子:
这与
会话.discard()相同,它不会有帮助。
Session["iAm"]=Null;