如果用户不是管理员并尝试访问某些控制器,则返回“〜/ Error / Unauthorized”页面。以下是我返回错误页面的方法:
if (!Models.Authorization.AdminPageCheck(this.User))
return new RedirectResult("~/Error/Unauthorized");
我可以为ActionResult方法执行此操作,但不能为字符串方法执行此操作,因为它不返回视图。如何保护字符串方法?
答案 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返回字符串。