ASP.NET中自定义AuthorizeAttribute的智能缓存

时间:2017-11-08 19:36:00

标签: c# asp.net asp.net-mvc asp.net-mvc-5

在我的应用程序中,我想为管理员添加功能,以转到特定屏幕,并为某些角色提供某些控制器/方法。 现在我正在使用内置角色检查,如

[Authorize(Roles = "APUL_Admin")]

所以我将其更改为[AuthorizeExtended()],我正在实现它:

public class AuthorizeExtended : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var isAuthorized = base.AuthorizeCore(httpContext);
            if (!isAuthorized)
            {
                return false;
            }
            // Point of interest **HERE**

            return true;
        }
    }

这都很标准。

此时( HERE 见上文)来自HttpContextBase我知道用户的角色,控制器和方法。我可以转到数据库并确保这些角色可以访问此控制器/操作。

这是我的问题: 我不想为每个请求转到数据库,因为它很慢并且对DB来说是很多开销。处理这个问题的最佳方法是什么?缓存吗?我正在寻找实施细节。

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

是的,缓存是您避免向数据库发出重复请求所需的内容。这是基本的实现:

def main():
    grade = input(“What’s your grade?”)
    if(grade >= 90):
        print(“You’re doing great!”)
    elif(grade <= 89 and >= 78):
        print(“You’re doing good!”)
    elif(grade >65 and <= 77)
        print("You need some work")
    else:
        print("Contact your teacher")
main()
相关问题