[英]Re-using the same method across multiple pages
我有办法
public void CheckLogin()
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
我不想在每个页面上重写它。 我该如何定义一次并在其他页面中调用此函数?
您通常将其放在实用程序类中。 将该功能标记为静态。 将实用程序类放在App_Code文件夹中(如果没有该文件夹,则将该文件夹放在网站的根目录中)。 确保您的类具有适当的using语句。
using System;
using System.Web;
public class AuthenticationUtilities
{
public static void CheckLogin()
{
if (HttpContext.Current.Session["UserName"]==null || HttpContext.Current.Session["UserName"]=="")
{
HttpContext.Current.Response.Redirect("Account/Login.aspx");
}
}
}
然后像这样从页面调用它...
AuthenticationUtilities.CheckLogin();
顺便说一下,您正在重新发明轮子。 您应该使用诸如身份之类的技术,而不是自己动手做。 我只是提供此答案,以防您需要在另一点上创建各个页面共有的功能。
使用继承为网页提供通用功能。
创建一个执行常规任务的页面,然后从该页面派生所有其他页面。
public class MyPage : MyBasePage
使用这种方法,无需显式调用任何东西。 它将全部在基类中处理,然后可以根据需要进行扩展。 您需要记住的是更改类声明,使其从您的基类继承。
另一种方法可能是将其放在公共母版页中。 但是我不太喜欢这种方法。
如果您正在执行此类授权检查,则可能要处理授权事件。 这很常见,以至于有一种内置方法:
来自基于用户的授权 ...
步骤1:在Web.config中定义URL授权规则
步骤2:修正未经授权,经过身份验证的用户的工作流程
创建带有静态类的类文件可能称为“ SessionCheck.cs”
并以静态形式写入此函数
public Static void CheckLogin()
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
那么您可以从任何页面访问它
SessionCheck.CheckLogin();
将其放在会话助手类中。
public class SessionHelper
{
public static void CheckLogin()
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
}
然后您这样称呼它。
SessionHelper.CheckLogin();
创建一个从Page扩展的类文件,
public class Navegable: Page
因此在init函数中将您的代码
void NavigablePage_PreInit(object sender, EventArgs e)
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
因此,网络表单从可导航性扩展。
MyPage : Navegable
就是这样,您所有从navegable扩展的网络表单都将运行验证
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.