保护字符串方法 -​​ 控制器

use*_*468 3 c# asp.net-mvc

如果用户不是管理员并尝试访问某些控制器,则返回"〜/ Error/Unauthorized"页面.以下是我返回错误页面的方法:

            if (!Models.Authorization.AdminPageCheck(this.User))
            return new RedirectResult("~/Error/Unauthorized");
Run Code Online (Sandbox Code Playgroud)

我可以为ActionResult方法执行此操作,但不能为字符串方法执行此操作,因为它不返回视图.如何保护字符串方法?

Ste*_*gan 5

最好使用ASP.NET MVC的内置功能,只需注释您的Controller(在类级别,所有操作或操作方法级别)

[Authorize]
Run Code Online (Sandbox Code Playgroud)

如果有人试图调用某个方法并且他们没有登录,则会强制他们使用web.config中配置的方法进行身份验证.

或者,如果你使用

[Authorize(Roles = "AdminRole")]
Run Code Online (Sandbox Code Playgroud)

他们将被迫进行身份验证,如果他们尚未进行身份验证,那么他们将被授予或拒绝基于具有相关角色的访问权限.

这是一个非常常见的要求,幸运的是,ASP.NET MVC团队已经非常全面地处理了它!