c# - 检查每个页面的登录

标签 c# asp.net webforms

我的项目中有多个网络表单。这是一个简单的项目。用户身份验证是通过检查数据库中的有效用户名和密码以及角色来完成的。 在每个网页的 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) { }
        }

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

请您推荐任何其他更有效的方法。在每一个code behind page里都加上这段代码,看起来很不专业。

最佳答案

创建继承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();
            }
        }

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

public partial class HomePage : Page

像这样添加到 PageBase:

public partial class HomePage : PageBase

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

关于c# - 检查每个页面的登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40903492/

相关文章:

c# - 自动属性和结构不混合?

c# - 如何使用 HttpClient 将带有 JSON 的 DELETE 发送到 REST API

c# - Azure IQueueClient : How do you simulate incoming messages?

c# - 来自 C# 的警报消息

asp.net - VirtualPath 在当前应用程序根目录之外

c# - 从 C# 调用 Powershell cmdlet 时无法调试 ImportPSModule 失败的原因

c# - 如何在 C# 中使用正则表达式删除 < 和 > 之间的字符?

asp.net - 如何在 Ext.NET 窗口中放置 GridPanel?

javascript - ios - 将文本注入(inject) UIWebView 文本字段

asp.net - 如何使用 JavaScript 按钮删除 gridview 上的一行并保留在同一页面上