ASP.NET MVC - Custom Authorization Attribute
Por vezes precisamos de alterar o comportamento da autorização numa aplicação. No meu caso precisei de fazê-lo para implementar a autenticação num projecto com a access token do Facebook.
Podemos implementar as nossas próprias regras recorrendo à interface IAuthorizationAttribute e fazer o override ao AuthorizeCore. Este método è boleano, e retorna verdadeiro caso o utilizador tenha permissões ou falso senão tiver.
Um exemplo simples:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (new Services.UserService().IsAuthenticated())
{
return true;
}
return false;
}
}
No service UserService tenho um método para verificar se o utilizador tem permissões (IsAuthenticated()).
Depois só preciso de usar o atributo [CostumAuthorize] nos controllers/actions.
[CustomAuthorize]
public ActionResult EditarPerfil()
{
}
O utilizador apenas poderá ver a action Perfil se tiver as permissões necessárias.
Podem ver mais informações sobre a class AuthorizeAttribute aqui: http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx