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");
}
}
}
}
我目前正在一些网上商店工作,到目前为止还不错。唯一担心的是我不想使用内置的授权功能。我想做一些不同的事情,使用 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");
}
}
}
}