c# - 对 AuthorizeAttribute 进行异常(exception)处理

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

我有一个有很多 Action 的 Controller 。除了一项操作外,所有用户都应该只能访问某些用户:

[Authorize(Roles = "Admin")]
public class SecretsController : Controller
{
    [Authorize]
    public ActionResult Index()
    {
        return View(...);
    }

    ...
}

[Authorize (Roles = null)]不起作用。方法属性将被忽略!我怎么能得到一个 Action 的异常(exception)?赞 AllowAnonymous允许它但对登录用户可见?

最佳答案

您可以使用 OverrideAuthorization属性就像我在下面的代码中所做的那样:

[Authorize(Roles = "Admin")]
public class SecretsController : Controller
{

    [OverrideAuthorization]
    [Authorize()]
    public ActionResult Index()
    {
        return View(...);
    }

    ...
}

[OverrideAuthorization] ASP.Net MVC5 附带的,你告诉你的 Index覆盖/忽略在 Controller 级别定义的授权规则的操作。

通过这样做,您在 SecretsController 中定义的所有操作仅对 可见管理员 角色除外 Index操作仅对经过身份验证的用户可见,即使他们不在 管理员 角色。

关于c# - 对 AuthorizeAttribute 进行异常(exception)处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35685147/

相关文章:

c# - 是否有 System.Drawing.Color 中所有颜色的在线示例?

c# - 如何在 AsQueryable 方法中使用 'Any'?

c# - 是否可以在 .NET Standard 项目的 session 中设置和获取值

c# - 传递 @Html.DisplayFor() - 从 View 到 Controller 的值

mysql - 在 ASP.Net 应用程序中以正确的格式显示日期

asp.net-mvc - 仅允许某些 HTML 标记作为用户输入

c# - 使用带有 sql 查询的 ado.net 时计算年龄?

c# - 如何在 C# - Windows 窗体中从 ePad 捕获签名?

c# - 在 Windows CE 上正确处理网络超时

c# - 在 MVC 中反序列化 JSON