ASP.NET 没有内置功能的授权

ASP.NET Authorization without built in functionality

我目前正在一些网上商店工作,到目前为止还不错。唯一担心的是我不想使用内置的授权功能。我想做一些不同的事情,使用 Global.asax 文件。在 Application_BeginRequest 中捕获 Request.RawUrl,以便在发送请求的那一刻检查特定文件夹是否被请求,如果未被授权则重定向回登录。我不想使用内置的原因是因为数据库。我想要我自己定制的数据库,因为我做了很多事情,我想完全控制它。是的,我之前看到这里推荐的很多教程。我已经搜索了几天这些东西,已经看到很多关于如何自定义这些内置功能的教程。

也许我的问题看起来很复杂,但最后我会简单地问一下。拦截 Global.asax 文件中的每个请求是否安全?使用 Application_BeginRequest 或其他东西是个好主意吗?

谢谢大家。

主要看你的系统和业务模型,如果你的每一个请求都需要授权,那么实现Application_BeginRequest中的授权逻辑可能会满足你的需求。但实际上,我不建议你这样做,因为一旦你这样做了,如果有一天你有一个无需登录就可以访问的功能,那么你就必须找到另一种方法来打破这个规则。这意味着您的系统将失去灵活性。

我建议使用授权过滤器,您可以继承 AuthorizeAttribute class,并使用您自定义的授权逻辑覆盖其方法。 更多详情:Custom Authorization filter in ASP.NET MVC 5?

顺便说一句,这是我使用的一个简单代码

 protected void Application_BeginRequest(object sender, EventArgs e)
    {

        HttpCookie cookie = Request.Cookies["es"];

        if (Request.RawUrl.Contains(@"/admin"))
        {
            if (cookie ==null)
            {
                Response.Redirect("~/login.aspx");

            }
            else
            {
                if (cookie["role"] != "admin")
                {


                    Request.Cookies.Remove("es");

                    Response.Redirect("~/login.aspx");

                }
            }


        }

    }