Funções e Segurança da ASP.NET MVC

Suponha que este seja o meu método de ação SampleController

public ActionResult AdminView()
{
    return View()
}

Se quiser que esse método de controlador seja chamado, se o usuário conectado pertencer à função admin, caso contrário, essa chamada de método deverá ser bloqueada e o usuário deverá obter uma página de erro de acesso não autorizado personalizado.

No meu aplicativo da Web asp.net mvc, quando o usuário efetua login, estou armazenando a função do usuário em uma sessão como uma cadeia de caracteres. E sempre que houver necessidade de validar a função do usuário, compararei o valor armazenado na sessão com uma constante "ADMIN_ROLE". Mas estou escrevendo essa parte do código para verificar a função do usuário em quase todos os métodos de ação do controlador e, em seguida, retornar uma visualização apropriada para o usuário ou uma exibição de página de acesso não autorizada se a função do usuário estiver restrita ao método de ação do controlador.

Eu pesquisei e li que podemos usar algo assim.

[Authorize(Roles="admin")]
public ActionResult AdminView()
{
  return View()
}

Mas não tenho certeza de como funciona a palavra-chave Authorize and Roles. Como quando colocar Roles = "Admin", vai ajudar na verificação da minha string de função de usuário armazenada na sessão, ou como eu posso redirecionar um usuário para uma página não autorizada, caso a função não corresponda à função marcada para o método de ação.

questionAnswers(3)

yourAnswerToTheQuestion