授权属性 v Authorizer.Authorize

Authorize attribute v Authorizer.Authorize

在我的 Orchard 模块中,我正在考虑将控制器操作中的 MVC 的 AuthorizeAttribute 替换为对 Authorizer.Authorize() 的调用。优点是如果用户无权访问页面,我可以重定向回主页,这样就不会告诉他们这是身份验证问题。

使用这个有安全问题吗:

public ActionResult Edit( int id ) {
    if ( !_authorizer.Authorize( Permissions.MyPermission ) ) 
        return Redirect("~/");
    // do stuff here and return
}

而不是这个:

[Authorize]
public ActionResult Edit( int id ) {
    // do stuff here and return
}

最感谢的是健全性检查。

根据 Hazza 的反馈,Authorizer.Authorize() 版本允许 Orchard 权限系统的粒度。当内置 ASP.NET 角色系统足够时,[Authorize] 属性非常有用。

我可能会结合使用两者,具体取决于控制器的操作。感谢您的输入 Hazza!