您当前的位置:KKBlog > 学无止境 > ASP.NET

如何防止直接输入URL进入某个页面

做了个系统,想防止直接输入URL进入某个页面。考虑了三种方法:
1.屏蔽掉IE的地址栏、菜单。
2.用session,慢的说
3.身份验证,具体怎么做?哪位大侠帮帮忙,给分给分!!!
或者有其它更好的方法?

1   把页面地址和登录角色的关系写入数据库,
比如某角色可以看那些页面

2   写一个basepage类,检查当前登录者所属角色是否有浏览当前页面的权限

3   在需要检查的页面的cs文件里继承该类

简单一点就在web.config文件里定义一下不允许匿名访问就可以了啊.
或者用session判断if   session( "username ")= " "   then   跳转到首页登陆页面

还可以用ServerVariables( "HTTP_REFERER ")来检查页面来源

Request.ServerVariables( "HTTP_REFERER ")的工作方式

下列情况是从浏览器的地址栏正常取得Request.ServerVariables( "HTTP_REFERER ")的:
1.直接用 <a   href>
2.用Submit或 <input   type=image> 提交的表单(POST   or   GET)
3.使用Jscript提交的表单(POST   or   GET)

下面我们再看看Request.ServerVariables( "HTTP_REFERER ")不能正常取值的情况:
1.从收藏夹链接
2.单击 ' '主页 ' '或者自定义的地址
3.利用Jscript的location.href   or   location.replace()
4.在浏览器直接输入地址
5. <%Response.Redirect%>
6. <%Response.AddHeader%> 或 <meta   http-equiv=refresh> 转向
7.用XML加载地址

用session[ "userid "]来判断,在登陆的时候存进session,当掉线或者直接输入url是就跳转到登陆页面

每次进入首页时,在数据库中给当前用户添加一个随机数,如果进入其它页面时候没有带上该随机数则判断为非法,该方法已在多个大型项目中成功应用

hzBool(Boolean)     谢谢,我愁的就是有的是ServerVariables( "HTTP_REFERER ")能检测到的,有的不是,因为一些页面是redirect过去的(redirect是可以取到ServerVariables( "HTTP_REFERER ")的),一些是用js从客户端open的,不能取到
PerfectStar(第一个获得图灵奖的中国籍男子)   不失为好方法,但是库表是已经定的,我不能随便添加。谢谢。

1   把页面地址和登录角色的关系写入数据库,比如某角色可以看那些页面

2   写一个basepage类,检查当前登录者所属角色是否有浏览当前页面的权限

3   在需要检查的页面的cs文件里继承该类
同意,我们现在做的项目就是采用这种办法来控制的

楼主说不希望出现直接输入地址进入的方式,那他是有这个页面的操作权限还是没有呢?
page_load里应该对这个session[ "userid "]的操作权限进行一下判断,如果有该页面的操作权限,我觉得直接输入url进入页面应该是不能被禁止的,当然前提是有session[ "userid "]

直接cookie嘛,如果考虑安全就加密下

利用cookie的身份认证,如果从cookie中读不到相应的数据,则跳转到登陆界面!

点连接和直接输入地址的区别似乎不大,怎么禁止?

using   System;
using   System.Web;
namespace   BR
{
        public   class   MyPageBase   :   System.Web.UI.Page
        {
                           
                public   MyPageBase()
                {
       
                }
                protected   override   void   OnInit(EventArgs   e)
                {  
                        if((LoginUser)Session[ "LoginUser "]   ==   null)
                        {
                                Response.Redirect(HttpContext.Current.Request.ApplicationPath   +   "/Login.aspx ",   true);
                        }
                        base.OnInit(e);                      
                }
        }
}

在每一页都继承这个类。
public   partial   class   WebForm1   :   BR.MyPageBase

谢谢各位,结贴了

 
二维码
意见反馈 二维码