Parte 7: Associação e a autorização
por Jon Galloway
O MVC Music Store é um aplicativo de tutorial que apresenta e explica passo a passo como usar ASP.NET MVC e Visual Studio para desenvolvimento na Web.
A MVC Music Store é uma implementação leve de loja de exemplo que vende álbuns de música online e implementa a administração básica do site, a entrada do usuário e a funcionalidade do carrinho de compras.
Esta série de tutoriais detalha todas as etapas executadas para criar o aplicativo de exemplo ASP.NET MVC Music Store. A Parte 7 aborda Associação e Autorização.
No momento, nosso controlador do Gerenciador de Lojas está acessível para qualquer pessoa que visite nosso site. Vamos alterar isso para restringir a permissão aos administradores do site.
Adicionando o AccountController e exibições
Uma diferença entre o modelo completo ASP.NET aplicativo Web MVC 3 e o modelo de aplicativo Web vazio do ASP.NET MVC 3 é que o modelo vazio não inclui um Controlador de Conta. Adicionaremos um Controlador de Conta copiando alguns arquivos de um novo aplicativo MVC ASP.NET criado com base no modelo de aplicativo Web MVC 3 ASP.NET completo.
Crie um novo aplicativo MVC ASP.NET usando o modelo de aplicativo Web MVC 3 ASP.NET completo e copie os seguintes arquivos para os mesmos diretórios em nosso projeto:
- Copiar AccountController.cs no diretório Controllers
- Copiar AccountModels no diretório Models
- Criar um diretório de conta dentro do diretório Exibições e copiar todos os quatro modos de exibição no
Altere o namespace para as classes Controller e Model para que elas comecem com MvcMusicStore. A classe AccountController deve usar o namespace MvcMusicStore.Controllers e a classe AccountModels deve usar o namespace MvcMusicStore.Models.
Observação: esses arquivos também estão disponíveis no download MvcMusicStore-Assets.zip do qual copiamos nossos arquivos de design de site no início do tutorial. Os arquivos de associação estão localizados no diretório Código.
A solução atualizada deve ser semelhante à seguinte:
Adicionando um usuário administrativo com o site de configuração de ASP.NET
Antes de exigir autorização em nosso site, precisaremos criar um usuário com acesso. A maneira mais fácil de criar um usuário é usar o site interno do ASP.NET Configuration.
Inicie o site de Configuração do ASP.NET clicando no ícone no Gerenciador de Soluções.
Isso inicia um site de configuração. Clique na guia Segurança na tela inicial e, em seguida, clique no link "Habilitar funções" no centro da tela.
Clique no link "Criar ou Gerenciar funções".
Insira "Administrador" como o nome da função e pressione o botão Adicionar Função.
Clique no botão Voltar e, em seguida, clique no link Criar usuário no lado esquerdo.
Preencha os campos de informações do usuário à esquerda usando as seguintes informações:
Campo | Valor |
---|---|
Nome de usuário | Administrador |
Senha | password123! |
Confirmar Senha | password123! |
(qualquer endereço de email funcionará) | |
Pergunta de Segurança | (o que você quiser) |
Resposta de Segurança | (o que você quiser) |
Observação: é claro que você pode usar qualquer senha desejada. As configurações de segurança de senha padrão exigem uma senha de 7 caracteres e contém um caractere não alfanumérico.
Selecione a função Administrador deste usuário e clique no botão Criar Usuário.
Neste ponto, você deverá ver uma mensagem indicando que o usuário foi criado com êxito.
Agora você pode fechar a janela do navegador.
Autorização baseada em função
Agora podemos restringir o acesso ao StoreManagerController usando o atributo [Authorize], especificando que o usuário deve estar na função Administrador para acessar qualquer ação do controlador na classe .
[Authorize(Roles = "Administrator")]
public class StoreManagerController : Controller
{
// Controller code here
}
Observação: o atributo [Authorize] pode ser colocado em métodos de ação específicos, bem como no nível da classe Controller.
Agora, navegar até /StoreManager abre uma caixa de diálogo Logon:
Depois de fazer logon com nossa nova conta de Administrador, podemos ir para a tela Editar Álbum como antes.