在用户登录的情况下。如何禁止用户直接输入页面地址或参数进行访问!目前最坏的打算就是在每个页面判断访问来源不想这样做。不方便管理。求高人给个整体控制的方案如:整个网站除了用户登录页面和后台登录页面可以输入页面地址访问。其他全不拒绝。

解决方案 »

  1.   

    request.ServerVariables("HTTP_REFERER")得到上一页来源,然后和你的域名比较
      

  2.   

    Request.UrlReferrer获取来源url地址,不过根据你的描述你似乎得做一个表来存贮这些来源页与本页之间的关系。
    如你的访问顺序为a-b-c-d-e
    那么你需要这样存储:
    a b
    b c
    c d
    d e
    好像很复杂,因为a页面有可能可以连接到c页面,那么还要有个a c的关系。
    仅仅根据你的描述进行的分析
      

  3.   

    加入session判断,否则跳转登录页面。
    session["UserName"]在登录页面赋值
      

  4.   

    formAuthenticate
    或者写个httpmodlue
    对每个页面进行判断,所有的页面继承基类BasePage
      

  5.   

    1.在Global.asax中加入判断
    2.将判断放到一个统一的页基类BaesPage中的Page_Load中
    3.用HttpModule或HtppHandler
      

  6.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;/// <summary>
    /// myhandler 的摘要说明
    /// </summary>
    public class myhandler:IHttpHandler
    {
        public myhandler()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        public void ProcessRequest(HttpContext context)
        {
            string localhost = System.Configuration.ConfigurationSettings.AppSettings["localhost"].ToString();
            if (context.Request.UrlReferrer.Host==null || context.Request.UrlReferrer.Host.ToString() != localhost)
            {
                context.Response.Write("<script>alert('" + localhost + "')</script>");
            }
            else
            {
                //跳转到该访问的页面   要怎么写?
                context.Response.Redirect(context.Request.Url.ToString());
            }
        }
        public bool IsReusable
        {
            get { return true; }
        }}
      

  7.   

    你可以先建立一个页面:
    public partial class Base : System.Web.UI.Page
    {
        protected virtual void Page_Load(object sender, EventArgs e)
        {
            if (Page.PreviousPage == null)
            {
                Response.Redirect("login.aspx");
            }
        }
    }然后所有的页面继承自它,比如:
    public partial class _Default : Base
    {
        protected new void Page_Load(object sender, EventArgs e)
        {
        }
    }我试了一下,应该可以的!
      

  8.   

    你个SX用户正常登录了。你说的那个SESSION就存在。他输入地址访问别人的资源。你的方法行么