在每个aspx文件中运行一个脚本

时间:2011-03-28 22:53:51

标签: asp.net

如何在每个aspx文件中运行脚本?

这就是我想在每个aspx文件的开头运行的内容。我怎么能这样做?

我不想将其复制并粘贴到我拥有的每个文件中

   if (CUser.LoginID == "")
   {
            Response.Redirect("login.aspx");
   }

5 个答案:

答案 0 :(得分:2)

最简单的方法可能是创建一个继承自System.Web.UI.Page的基页类,并在Page_Load中运行此代码。然后,将每个页面更改为从基页类继承。然后,无论何时页面加载,它都将在基类和页面类中执行Page_Load

可能更好的方法是实现HttpModule,但稍微复杂一点。 HttpModule背后的想法是它将拦截请求,做一些自定义的事情,然后照常传递请求。

答案 1 :(得分:1)

您可能希望使用HTTP module

HTTP模块为Web应用程序注册,并在请求的整个生命周期中的某些点接收事件。

由于这看起来与网站身份验证有关,因此您可以使用AuthenticateRequest事件检查CUser.LoginID属性,并在必要时重定向。

答案 2 :(得分:0)

创建一个BasePage.cs类:

public class BasePage:System.Web.UI.Page
{

   protected override void OnInit(EventArgs e)
   {
       if (CUser.LoginID == "")
       {
           Response.Redirect("login.aspx");
       }
   }
}

然后每个aspx文件都会改变:

public partial class pagename: System.Web.UI.Page

public partial class pagename: BasePage

你完成了。它应该适合你。如果用户未登录,它对我的​​用户登录跟踪和重定向非常有用。

答案 3 :(得分:0)

如果您想在页面请求上对用户进行身份验证,正如您的代码所示,您应该查看asp.net表单身份验证。

http://www.asp.net/security/tutorials/an-overview-of-forms-authentication-cs

如果要在每个页面请求上运行任意一组函数,您可以:

1)创建一个继承自System.Web.UI.Page的基页,重写OnInit方法并将代码粘贴在那里。确保您的页面现在继承自新的基页。

2)通过在Application_BeginRequest方法中添加代码来修改Global.asax.c。

答案 4 :(得分:0)

我可以直接回答你的问题。但是,通常的做法是将身份验证重定向放在web.config中。它会在这样一个部分:

 <authentication mode="Forms">
   <forms name=".SAMPLESITEAUTH" loginUrl="~/Login.aspx" protection="All" timeout="20" slidingExpiration="true" path="/" cookieless="UseCookies"></forms>
 </authentication>

用户将被重定向到loginUrl中列出的网址。

相关问题