检查每个页面的登录

use*_*591 5 c# asp.net webforms

我的项目中有多个 Web 表单。这是一个简单的项目。用户身份验证是通过从数据库中检查有效的用户名和密码以及角色来完成的。在每个网页的 Page_Load 事件中,我添加了以下代码:

protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Session["username"] == null & Session["role"] == null)
                {
                    Response.Redirect("WebLogin.aspx", false);
                    Context.ApplicationInstance.CompleteRequest();
                }
            }
            catch (Exception ex) { }
        }
Run Code Online (Sandbox Code Playgroud)

这样如果有人试图通过 URL 访问特定网页,它将检查用户名和角色。如果为空,则重定向到登录页面。

请您提出任何其他更有效的方法。把这段代码加到每一个代码背后,看起来很不专业。

ice*_*gon 5

创建继承 Page 类的新类 PageBase 并覆盖它的 onload 方法,然后添加您的登录检查代码

public abstract class PageBase : Page
{
    protected override void OnLoad(EventArgs e)
    {
        if (Session["username"] == null & Session["role"] == null)
            {
                Response.Redirect("WebLogin.aspx", false);
                Context.ApplicationInstance.CompleteRequest();
            }
        }
Run Code Online (Sandbox Code Playgroud)

现在,对于您的每个表单,只需更改页面类继承即可:

public partial class HomePage : Page
Run Code Online (Sandbox Code Playgroud)

到 PageBase 像这样:

public partial class HomePage : PageBase
Run Code Online (Sandbox Code Playgroud)

这将使您的代码更有条理和干净