我有一个方法
public void CheckLogin()
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
我不想在每一页都重写它。如何定义这一次并在其他页面中调用此函数?
答案 0 :(得分:2)
您通常将其放在实用程序类中。将该功能标记为静态。将实用程序类放在App_Code文件夹中(如果您没有,请将此文件夹放在站点的根目录中)。确保您的班级有适当的使用陈述。
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();
顺便说一下,你重新发明了轮子。您应该使用诸如Identity之类的技术,而不是使用自己的技术。我只提供这个答案,以防你需要在另一个点创建一个共同的各种页面的功能。
答案 1 :(得分:1)
使用继承为您的网页提供通用功能。
创建一个执行常规任务的页面,然后从该页面派生所有其他页面。
public class MyPage : MyBasePage
使用这种方法,不需要显式调用任何东西。它将全部在基类中处理,然后您可以根据需要进行扩展。您需要记住的是更改类声明,以便它继承自您的基类。
另一种方法可能是将其粘贴在一个公共母版页中。但我并不喜欢这种方法。
答案 2 :(得分:1)
如果您正在进行此类授权检查,则可能需要处理授权事件。这很常见,有一种内置的方法可以做到这一点:
来自User-based Authorization ...
步骤1:在Web.config中定义URL授权规则
第2步:修复未经授权,经过身份验证的用户的工作流程
答案 3 :(得分:0)
使用静态类创建一个类文件可能被称为“SessionCheck.cs”
并将此函数写为静态
public Static void CheckLogin()
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
然后您可以从任何页面访问它,如
SessionCheck.CheckLogin();
答案 4 :(得分:0)
将它放在Session Helper类中。
public class SessionHelper
{
public static void CheckLogin()
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
}
然后你这样称呼它。
SessionHelper.CheckLogin();
答案 5 :(得分:0)
创建一个从Page,
扩展的类文件public class Navegable: Page
所以在init函数中放入你的代码
void NavigablePage_PreInit(object sender, EventArgs e)
{
if ((Session["UserName"] == "") || (Session["UserName"] == null))
{
Response.Redirect("Account/Login.aspx");
}
}
因此,Web表单从navegable扩展。
MyPage : Navegable
那就是,从navegable扩展的所有webform都将运行验证