Asp.net 在浏览器中粘贴受限路径时表单身份验证不起作用
我有一个使用内置表单身份验证的asp.net站点。站点有一个管理员页面,管理员等提升帐户使用该页面更新内容。管理页面位于根目录下一级。我使用“注销”按钮启动注销例程以终止会话,但如果我在注销后将管理文件的路径粘贴到浏览器中,我就可以访问此受限页面。如果在登录前粘贴路径,则会获得所需的行为,t登录控件如下所示Asp.net 在浏览器中粘贴受限路径时表单身份验证不起作用,asp.net,Asp.net,我有一个使用内置表单身份验证的asp.net站点。站点有一个管理员页面,管理员等提升帐户使用该页面更新内容。管理页面位于根目录下一级。我使用“注销”按钮启动注销例程以终止会话,但如果我在注销后将管理文件的路径粘贴到浏览器中,我就可以访问此受限页面。如果在登录前粘贴路径,则会获得所需的行为,t登录控件如下所示 <asp:LoginView ID="LoginView1" runat="server"> <LoggedInTemplate> <d
<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,表单身份验证由框架提供,为什么要发明轮子?@RishoLoginStatus
控件默认情况下也在asp.net中提供。它根据用户是否登录,为您提供可自定义的登录
链接和注销
链接。如果您使用它,您就省去了编写易于出错的代码来处理注销例程的麻烦,就像您使用Logoutbtn\u Click
@Risho抱歉,我在第一条评论中指的是LoginStatus
控件一样。这就是它在代码中的样子:
这与会话.discard()相同代码>,它不会有帮助。
Session["iAm"]=Null;