如何在每个aspx文件中运行脚本?
这就是我想在每个aspx文件的开头运行的内容。我怎么能这样做?
我不想将其复制并粘贴到我拥有的每个文件中
if (CUser.LoginID == "")
{
Response.Redirect("login.aspx");
}
答案 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中列出的网址。