限制只能通过登陆进入网页 正在学习asp.net,做了一些很小的网站,用sqlserver 2005做后台数据库。做的有管理页面,理论上管理页面只能在登陆以后才能显示,可是我现在做的网站,在网址里直接输入登陆后的网页的路径也能访问。请问该如何解决这个问题??谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请关注这个帖子:http://topic.csdn.net/u/20120414/23/4eee760b-2e30-4f49-a527-dfaeb19919c7.html?63637 写一个页面基类,然后所有的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); } } }} 同意楼上的session就可以了 记录用户名 登陆的时候判断是否带着session 用SESSION 在登陆页面后台添加Session["UserName"] = xxx;在其他页面的LOAD页面检查 if(Session["UserName"]==NUll) Response.Redirect(此处为跳转到新页面,一般是登陆页面)当然还可以加一些提示信息 直接用 Session就可以的。判断Session是否带值,不带,就到一个登录页面,带了的话,就进入网页访问。if(Session==null){ response.redirect("login.aspx"); //转向登录页面}else{ response.redirect("index.aspx"); //登入主页} 上面有点小错误登陆页面:Session.Add("UserName", name); 其中name是他的值比如 Session.Add("UserName", "Admin"); Session.Add("UserGroup", "最高管理员"); 那么 Session中就有了2项 Session["UserName"] Session["UserGroup"] ,值分别为Admin,最高管理员 OnInit 或者 pageload里面 判断 session 是不是 存在 和 是不是具有相应的权限 求求答案 怎么让table的上边框不显示 求助:关于模拟其他账户上下文的问题 怎么实现像csdn 编辑器 可以显示漂亮的源代码,感谢! 一个简单的往数据库添加的问题 问个连接SQL serve数据库的问题? 高分求字符串比较的算法 关于DataGrid模板列(DropDownList)动态加载数据时 FindControl("DDLEditMTitle")语句的问题 请各位多多帮忙解决一下 想在腾讯开放平台上开发自己的应用 关于使用command对象修改Product表中的信息问题 赋值
http://topic.csdn.net/u/20120414/23/4eee760b-2e30-4f49-a527-dfaeb19919c7.html?63637
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);
}
} }
}
Session["UserName"] = xxx;在其他页面的LOAD页面检查 if(Session["UserName"]==NUll) Response.Redirect(此处为跳转到新页面,一般是登陆页面)当然还可以加一些提示信息
判断Session是否带值,不带,就到一个登录页面,带了的话,就进入网页访问。if(Session==null)
{
response.redirect("login.aspx"); //转向登录页面
}
else
{
response.redirect("index.aspx"); //登入主页
}
登陆页面:
Session.Add("UserName", name); 其中name是他的值比如
Session.Add("UserName", "Admin");
Session.Add("UserGroup", "最高管理员");
那么 Session中就有了2项 Session["UserName"] Session["UserGroup"] ,值分别为Admin,最高管理员
OnInit 或者 pageload里面 判断 session 是不是 存在 和 是不是具有相应的权限