【问题标题】:Have method opt out of class-level AuthorizeAttribute?有方法选择退出类级别的 AuthorizeAttribute 吗?
【发布时间】:2015-08-01 22:03:05
【问题描述】:

我有一个 ApiController 类,其中包含 10 个公共方法。

在这 10 种方法中,有 9 种需要 [Authorize(Roles="Admin")]。没有的,不需要任何授权。

如果不是那种不需要授权的单一方法,我会用[Authorize(Roles="Admin")] 装饰ApiController 类。

我不是在类级别,而是用相同的[Authorize(Roles="Admin")] 装饰所有九个方法,而不是用[Authorize(...)] 装饰那个单一方法。

我不喜欢的是我必须重复相同的[Authorize(Roles="Admin")] 九次。

有没有办法让我仍然可以用[Authorize(Roles="Admin")] 来装饰类,并且只用一个属性来装饰不应该有[Authorize(Roles="Admin")] 的单个方法,该属性意味着“不要应用类级别”此特定方法的操作过滤器”?

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-web-api


    【解决方案1】:

    您可以使用[AllowAnonymous] 属性。例如,当网站处于预览状态时,我已在登录操作中执行此操作,因此任何人都可以看到登录页面,但在他们登录之前没有人可以看到网站的其余部分。对于客户来说,这是一个简单的解决方法:-)

    事实上,我什至写了一个从数据库中读取设置的自定义属性,所以如果你明白我的意思,我可以将网站置于“锁定”状态。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2015-11-17
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多