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

时间:2011-07-27 14:47:06

标签: c# asp.net-mvc

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

            if (!Models.Authorization.AdminPageCheck(this.User))
            return new RedirectResult("~/Error/Unauthorized");

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

4 个答案:

答案 0 :(得分:5)

最好使用ASP.NET MVC的内置功能,并使用

注释您的Controller(在类级别,所有操作或操作方法级别)
[Authorize]

如果有人试图调用方法并且他们没有登录,他们将被迫使用web.config中配置的方法进行身份验证。

或者,如果您使用

[Authorize(Roles = "AdminRole")]

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

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

答案 1 :(得分:1)

您应该更改这些方法以返回ActionResult s 然后,您可以return Content(someText, "content/type")

答案 2 :(得分:0)

如果你有时候得到的结果不同于一个字符串,那么首选的“修复”就是:不要返回string;返回ActionResult,当字符串时,

return Content(yourString);

(可选)指定内容类型/编码。

答案 3 :(得分:0)

正如SLaks所提到的,您可以将字符串方法的返回类型更改为ActionResult,然后使用ContentResult class返回字符串。