显示[授权]属性的特定于操作的授权消息

时间:2010-04-13 15:49:04

标签: asp.net-mvc authorization authorize-attribute

[Authorize][Authorize(Roles="Administrator")]属性将用户重定向到登录页时,是否可以显示特定于操作的授权邮件?

理想地,

[Authorize(Roles="Administrator", Message="I'm sorry Dave. I'm afraid I can't let you do that.")]
public ActionResult SomeAdminFunction()
{
    // do admin stuff
    return View();
}

据我了解,属性并不意味着添加功能,但这似乎纯粹是信息性的。人们可以在动作中做到这一点,但与使用属性相比,这似乎是不优雅的。

可替换地,

if (!Request.IsAuthenticated)
{
    if (!User.IsInRole("Administrator"))
        SetMessage("You need to be an administrator to destroy worlds."); // write message to session stack
    return RedirectToAction("SignIn", "Account");
}

是否有现成方法可以执行此操作,还是需要覆盖[Authorize]属性?

1 个答案:

答案 0 :(得分:2)

我会覆盖该属性以添加我的特定消息。