防止直接输入URL跳过登录(如何强制关闭页面,不提示是否关闭)

我在后台管理页面中,用Session来判断,值为空则跳转至登录页面。可跳转的同时浏览器却会提示是否关闭原窗口。若选择否,结果就是打开两个页面。
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] == null)
{
Response.Redirect("Login.aspx");
}
}
是不是应该换别的方法呢?求解答!

在你的Admin文件夹中添加一个Web.config,通过配置Web.config实现。在<system.web>节点下配置:

&lt;?xml version="1.0"?&gt;
&lt;configuration&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;system.web&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;authorization&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;deny users="?"/&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/authorization&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/system.web&gt;&nbsp;&nbsp;
&lt;/configuration&gt;


每次,net都会验证用户是否通过登录页面过来的。。。不是的话就定位到登录的页面。。。

登录的页面名字必须是Login.aspx(一般的习惯)。

目录结构:

登录界面:

前台:

&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Admin_Account_Login" %&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html xmlns="&lt;a href="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" target="_blank"&gt;<a href="http://www.w3.org/1999/xhtml&lt;/a&gt;" target="_blank">http://www.w3.org/1999/xhtml&lt;/a&gt;</a>"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form id="form1" runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;姓名:&amp;lt;asp:TextBox ID="TextBox1" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;/br&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;密码:&amp;lt;asp:TextBox ID="TextBox2" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;/br&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;



后台代码:


protected void Page_Load(object sender, EventArgs e)
{
}
&amp;nbsp;protected void Button1_Click(object sender, EventArgs e)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (TextBox1.Text != "weiwei" || TextBox2.Text != "123") return;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var user = TextBox1.Text;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FormsAuthentication.RedirectFromLoginPage(user, false);//使用.net的Security机制
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Session["user"] =user ;//注册Session
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Redirect("~/Admin/Default.as



登出的界面代码更简单,如下:



protected void Page_Load(object sender, EventArgs e)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FormsAuthentication.SignOut();//Security登出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Session["user"] = "";//清空Session
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Redirect("Login.aspx");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}



Admin文件夹主界面Default.aspx:


&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html xmlns="&lt;a href="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" target="_blank"&gt;<a href="http://www.w3.org/1999/xhtml&lt;/a&gt;" target="_blank">http://www.w3.org/1999/xhtml&lt;/a&gt;</a>"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form id="form1" runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;你好,&amp;lt;%=Session["user"] %&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;a href="../Account/Out.aspx"&amp;gt;退出&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;



好了到这里就ok了。。。。。这么操蛋了。。。。成这样了。。。附源码把。。。


温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-23
通常的做法是这样的:在登录页(比如说是login.asp)登陆成功后,要把登陆成功的状态赋值给一个Session变量,比如 Session("login")="OK",然后在除登录页之外的其他页面的开头都检测这个Session变量的值,不是登录状态即立刻强制跳转到登录页面,比如:
if session("login")<>"OK" then response.redirect "login.asp"
这样的话,除登录页之外的其他页面如果想通过地址栏直接输入URL进入都会被强行转到登录页面,这样就可以防止非法进入了。
第2个回答  2013-04-29
不需要,我也采用过类似的办法
没有出现你所说的是否关闭原窗口的问题

你可以按照流程进行测试

首先令Session["username"] = null;或者Session["username"] ="";
然后用户登录成功的时候进行赋值
当用户退出时先将Session["username"] = null然后在退出或者重导向到登录页面

这样是不会出现你所说的情况的
你可以试一下 如有疑问请追问本回答被网友采纳
第3个回答  2013-04-29
没有这么复杂啊。
直接在web.config里定义就可以了。根本不需要任何代码。

随便哪本ASP.NET 书里都有无穷多的例子。
第4个回答  2015-10-13
用js获取cookie值,判断获取的cookie值是否存在(cookie存在即登录),然后强制跳转到指定页面

防止直接输入URL跳过登录(如何强制关闭页面,不提示是否关闭)
在你的Admin文件夹中添加一个Web.config,通过配置Web.config实现。在<system.web>节点下配置:<?xml version="1.0"?><configuration><system.web><authorization><deny users="?"\/><\/authorization><\/system.web><\/configuration>每次,net都会验证用户是否通过登录页面过来的。。。不是的话就定位到...

弹出窗口“你查看的网页正在试图关闭窗口,是否关闭此窗口”如何让它不...
该内存不能为“read”的提示。解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x0606...

asp.net怎么让某些页面不能通过直接输入网址打开?
告诉你用上面的那个方法了啊 把上面的的记录当成参数传到你要判断的页面如不为空的话说明上面还有父页面,如果为空当然就是直接输入的页面的。其中request.url.tostring();是获得当前页面的url地址 这下说的够明白了吧

浏览器从输入URL后到出现页面,这个过程发生了什么?
首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成字符编码等操作。DNS解析,把域名转化成IP地址后,服务器会对连接请求做出响应,表示同意建立连接。服务器开始构建响应,创建一条http响应报文,把资源信息放到响应体里面开始返回 http请求响应,都有一个状态码...

使用浏览器中打开网页提示请不要使用非法的url地址访问的原因及解决方...
问题一:浏览器损坏1、双击打开 360浏览器 ,在右下角点击 修复 选项;2、打开后点击“ 一次修复 ”;3、点击“ 立即修复 ”按钮;4、修复完成后, 重启浏览器 ,重新打开网页查看是否已修复成功,否则可以尝试重装浏览器。问题二:防火墙设置不正确1、Windows防火墙拦截也有可能导致...

IE自动关闭窗口时,显示是否关闭的提示框
方案七:修复IE浏览器1. 打开【电脑管家】→选择【软件管理】→点击【软件仓库】→输入"Internet Explorer"开始搜索→点击【修复】(IE8以下的版本可以直接点击【下载】):2. 安装时根据提示选择【我不想立即参与(O)】→点击【下一步(N)】→点击【我同意(A)】不勾选【安装更新(I)】→【下一步(...

当在页面输入信息时要离开页面,提示是否保存,asp的代码
在标签里加onUnload="window.open('要弹出窗口的URL')"不用asp

作业帮如何禁止跳转界面
1. 设置链接跳转限制:通过编程技术,对链接进行限制,禁止跳转到指定的页面或者域名,只允许跳转到指定的合法页面。2. 弹出提示窗口:在用户点击跳转链接时,弹出提示窗口进行确认,防止误操作或者恶意跳转。3. 验证码验证:在跳转页面前要求用户输入验证码,以确保用户的身份和操作的合法性。4. URL过滤和...

首页www没经过77uuvv提示,就跳转77uuvv应该怎么com登入?
也就是用户注销。是否判断已经登录可以在登陆的servlet里面用session进行保存。写一个过滤器,当用户访问一个需要登录才能进去的页面时,跳出一个提示用户需要登录才能进去的页面,同时获取用户地址栏输入的url,保存在一个session里边,用户输入正确的登录信息后,拿到之前session保存的路径,直接重定向到这个路径。

怎样在注册成功后给出提示信息,然后跳转到登陆界面?
1、以苹果系统的登录身份验证界面为例。首先,打开计算机并在红色框中选择wifi设置,如下图所示,然后进入下一步。2、其次,完成上述步骤后,在红色框中选择WIFI,如下图所示,然后进入下一步。3、接着,完成上述步骤后,单击任意浏览器,如下图所示,然后进入下一步。4、然后,完成上述步骤后,在URL...

相似回答