正在学习asp.net,做了一些很小的网站,用sqlserver 2005做后台数据库。做的有管理页面,理论上管理页面只能在登陆以后才能显示,可是我现在做的网站,在网址里直接输入登陆后的网页的路径也能访问。请问该如何解决这个问题??谢谢!!

解决方案 »

  1.   

    请关注这个帖子:
    http://topic.csdn.net/u/20120414/23/4eee760b-2e30-4f49-a527-dfaeb19919c7.html?63637
      

  2.   

    写一个页面基类,然后所有的aspx页面都继承自该类来控制
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Microsoft.VisualBasic;
    using System.Xml;
    using System.Web.UI.HtmlControls;namespace CSDN
    {
        public class BasePage : System.Web.UI.Page
        {
            public BasePage()
            {        }        public string PageTitle
            {
                get
                {
                    return Page.Title;
                }
                set
                {
                    Page.Title = value;
                }
            }
            /// <summary>
            /// 出示话页面
            /// </summary>
            /// <param name="e"></param>
            protected override void OnInit(EventArgs e)
            {
                object currentUser = Session["LoginName"];
                if (currentUser == null)
                {
                    MessageBoxAndRedirect("请重新登录", "../Longin/Longin.aspx", "");
                }
                string cssUrl = "../_rec/css/base.css";
                HtmlLink CssControl = new HtmlLink();
                CssControl.Href = cssUrl;
                CssControl.Attributes.Add("rel", "stylesheet");
                CssControl.Attributes.Add("type", "text/css");
                Page.Header.Controls.Add(CssControl);
                cssUrl = "../_rec/css/layout.css";
                CssControl = new HtmlLink();
                CssControl.Href = cssUrl;
                CssControl.Attributes.Add("rel", "stylesheet");
                CssControl.Attributes.Add("type", "text/css");
                Page.Header.Controls.Add(CssControl);
                cssUrl = "../_rec/css/form.css";
                CssControl = new HtmlLink();
                CssControl.Href = cssUrl;
                CssControl.Attributes.Add("rel", "stylesheet");
                CssControl.Attributes.Add("type", "text/css");
                Page.Header.Controls.Add(CssControl);            cssUrl = "../_rec/css/table.css";
                CssControl = new HtmlLink();
                CssControl.Href = cssUrl;
                CssControl.Attributes.Add("rel", "stylesheet");
                CssControl.Attributes.Add("type", "text/css");
                Page.Header.Controls.Add(CssControl);          }
            /// 跳转父页面
            /// </summary>
            /// <param name="AText">要显示的文本内容。</param>
            /// <param name="AUrl">警告框关闭后浏览器将要跳转的地址。</param>
            /// <res></res>
            public static void MessageBoxAndRedirect(string AText, string AUrl, string Top)
            {
                AText = FormatJScriptAlertText(AText);
                System.Web.HttpContext.Current.Response.Write("<script language='Javascript'>alert('" + AText + "');" +
                                                               Constants.vbNewLine + "window.top.location.href ='" + AUrl + "';" + "</script>");
                System.Web.HttpContext.Current.Response.End();
            }
            /// <summary>
            /// 格式化 JScript 函数 Alert 中的文本为 HTML 格式。
            /// </summary>
            /// <param name="AText">要格式化的 Alert 文本。</param>
            /// <returns>字符串。可以被 JScript Alert 函数正确显示的字符串。</returns>
            /// <res></res>
            public static string FormatJScriptAlertText(string AText)
            {
                string s = AText.Replace("\\", "\\\\");
                s = s.Replace(ControlChars.CrLf, "\n");
                s = s.Replace(ControlChars.Cr, char.Parse("\n"));
                s = s.Replace(ControlChars.Lf, char.Parse("\n"));
                s = s.Replace("'", "\'");
                return s;
            }
            public string CurrentUser
            {
                get
                {
                    object currentUser = Session["LoginName"];
                    if (currentUser != null)
                    {
                        return (string)currentUser;
                    }
                    else
                    {
                        Response.Redirect("Login.aspx");
                        return null;
                    }
                }
                set
                {
                    Session["LoginName"] = value;
                }        }        public virtual void MsgBox(string msg)
            {
                string scriptString = "<script language=JavaScript>"; //String scriptString = "〈script language=JavaScript〉";
                scriptString += "window.alert('" + msg + "')";
                scriptString += "</script>";
                if (!ClientScript.IsClientScriptBlockRegistered("MsgBox"))
                {
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "MsgBox", scriptString);
                }
            }    }
    }
      

  3.   

    同意楼上的session就可以了 记录用户名 登陆的时候判断是否带着session
      

  4.   

    用SESSION  在登陆页面后台添加
    Session["UserName"] = xxx;在其他页面的LOAD页面检查  if(Session["UserName"]==NUll) Response.Redirect(此处为跳转到新页面,一般是登陆页面)当然还可以加一些提示信息
      

  5.   

    直接用 Session就可以的。
    判断Session是否带值,不带,就到一个登录页面,带了的话,就进入网页访问。if(Session==null)
    {
       response.redirect("login.aspx");      //转向登录页面
    }
    else
    {
       response.redirect("index.aspx");       //登入主页
    }
      

  6.   

    上面有点小错误
    登陆页面:
    Session.Add("UserName", name); 其中name是他的值比如
                    Session.Add("UserName", "Admin");
                    Session.Add("UserGroup", "最高管理员");
               
    那么 Session中就有了2项  Session["UserName"] Session["UserGroup"] ,值分别为Admin,最高管理员
      

  7.   


    OnInit 或者  pageload里面  判断 session 是不是 存在 和 是不是具有相应的权限