WebMatrix - Segurança e MemberShip - I


Continuando a série de artigos básicos sobre o WebMatrix vou falar sobre como podemos usar e implementar a segurança e a associação.

É uma exigência muito comum no design de aplicações web que partes de um site só estejam disponíveis para certos usuários com determinados privilégios.

Na prática, isso é implementado fazendo com que os usuários efetuem o login no site para determinar a sua identidade; este processo é conhecido como autenticação.

Uma vez que a identidade de um usuário foi estabelecida, os acessos definidos em sua conta de usuário são aplicados e ele poderá ter acesso ao site conforme seus privilégios a isso chama-se associação ou membership.

Você pode configurar a segurança e os membros de diferentes maneiras:

Neste artigo vamos ver como o helper(ajudante) WebSecurity do WebMatrix pode ser usado para implementar as funcionalidades de autenticação e associação em um site web.

Vamos aprender como restringir as áreas de um site para indivíduos e grupos de usuários autenticados, bem como permitir que novos usuários se inscrevam para uma conta, e também como permitir que os usuários existentes possam entrar, mudar e redefinir suas senhas.

O sistema de associação armazena seus dados em um conjunto de tabelas de banco de dados. Vamos ver como o WebMatrix pode gerar essas tabelas para nós em um banco de dados e como conectar os dados existentes de usuários de outras fontes ao sistema.

Veremos também um exemplo de como podemos fornecer páginas de realizar a administração do usuário e como armazenar as informações do usuário com segurança em um banco de dados.

Provavelmente terei que tratar destes assuntos em mais de um artigo, então vamos lá...

Configurando Helper WebSecurity

A fim de usar o helper(auxiliar) WebSecurity, ele deve primeiro ser inicializado via código. Para fazer isso, precisamos chamar o método WebSecurity.InitializeDatabaseConnection(), passando em alguns valores de inicialização.

A chamada para o método InitializeDatabaseConnection() método pode ser feita a qualquer tempo antes da primeira interação com helper. Na maioria dos casos, o melhor é fazer isso durante a inicialização da aplicação, colocando-o dentro do arquivo _AppStart.cshtml do site.

O método InitializeDatabaseConnection() tem uma assinatura contendo cinco parâmetros e uma sobrecarga contendo seis parâmetros:

public static void InitializeDatabaseConnection
(
   string connectionStringName,
   string userTableName,
   string userIdColumn,
   string userNameColumn,
   bool autoCreateTables
)
public static void InitializeDatabaseConnection
(
   string connectionStringName,
   string providerName,
   string userTableName,
   string userIdColumn,
   string userNameColumn,
   bool autoCreateTables
)

Parâmetros do método initializeDatabaseConnection:

Nome do parâmetro Descrição
connectionStringName O nome da string de conexão ou do arquivo SQL Server Compact(sem a extensão .sdf)
providerName O nome do provedor ADO.NET. Ao usar o SQL Server este parâmetro deverá ser omitido.
userTableName O nome da tabela do banco de dados que contém a informação do perfil do usuário
userIdColumn O nome da coluna que contém o ID do usuário. (Deve ser to tipo int)
userNameColumn O nome da coluna que contém o nome do usuário
autoCreateTables Valor boleano usado para indicar se as tabelas do perfil do usuário e dos membros serão
criadas automaticamente pelo ASP .NET se elas ainda não existirem.

A flexibilidade do helper WebSecurity é uma de suas principais características e benefícios. O helper pode trabalhar tanto com os suas próprias tabelas de banco de dados ou pode ser facilmente configurado para se integrar com qualquer dados existentes.

Muitas empresas, por exemplo, já contem a informação de usuários que poderiam ser usadas como base para um sistema de autenticação e membros.

Apontando o helper para uma base de dados existente, juntamente com as colunas para os ids de usuário e nomes de usuários a duplicação de dados pode ser minimizada.

O helper WebSecurity distingue entre o perfil e os dados dos membros.

Os dados do perfil do usuário são: o nome de usuário e o ID, juntamente com qualquer outra informação pessoal que deseja armazenar sobre o usuário(endereços de email, números de contato, data de nascimento, etc.).

Os dados dos membros é a informação de segurança exigida pelo sistema de associação para autenticar e administrar os usuários deste sistema em particular (senhas, datas de mudança da última senha, funções de aplicativos, etc.). Essa divisão entre o perfil e os dados dos membros torna possível ao helper trabalhar com os dados atuais do usuário.

Vamos criar um novo site para demonstrar o sistema de autenticação e membros do WebMatrix.

Abra o WebMatrix e clique em - Site From Template - para criar um novo site a partir de um modelo;

Escolha o modelo Empty Site e informe o nome do site. No exemplo eu dei o nome :

Vamos incluir na raiz do site um novo arquivo _AppStart.chstml.

Para isso selecione a guia Files e a seguir no menu clique em New -> New File;

Na janela Choose a File Type , clique no tipo CSHTML e informe o nome _AppStart.cshtml e a seguir no botão OK;

Altere o conteúdo do arquivo conforme o código abaixo:

O código define a inicialização do helper WebSecurity definindo a criação de um banco de dados chamado MembrosExemplo.sdf e da tabela UserProfile contendo as colunas UserId e UserName;

Temos então que criar o banco de dados MembrosExemplo.sdf no site.

Para isso clique na guia DataBase e a seguir no menu New DataBase;

Logo após altere o nome do banco de dados para MembrosExemplo.sdf:

Vamos agora incluir um novo arquivo chamado Default.cshtml na raiz do nosso site;

Clique no item do menu New->New File;

A seguir escolha o template CSHTML e informe o nome Default.cshtml e clique em OK;

Em seguida inclua o código abaixo no arquivo Default.cshtml:

Quando executamos o site pela primeira vez, veremos que o método InitializeDatabaseConnection() invocado no arquivo _AppStart.cshtml criou quatro tabelas no banco de dados MembrosExemplo.sdf.

Com essas tabelas criadas temos o sistema para membros inicializado e podemos implementar uma página de registro permitindo que novos usuários possam criar contas no banco de dados.

No próximo artigo sobre o assunto irei mostrar como criar a página de registro usando os recursos do helper WebSecurity.

Pegue o projeto completo aqui: SegurancaMembros.zip

Salmos 7:8 O Senhor julga os povos; julga-me, Senhor, de acordo com a minha justiça e conforme a integridade que há em mim.
Salm
os 7:9 Cesse a maldade dos ímpios, mas estabeleça-se o justo; pois tu, ó justo Deus, provas o coração e os rins.
Salm
os 7:10 O meu escudo está em Deus, que salva os retos de coração.
Salm
os 7:11 Deus é um juiz justo, um Deus que sente indignação todos os dias.
Salm
os 7:12 Se o homem não se arrepender, Deus afiará a sua espada; armado e teso está o seu arco;
Salm
os 7:13 já preparou armas mortíferas, fazendo suas setas inflamadas.
Salm
os 7:14 Eis que o mau está com dores de perversidade; concedeu a malvadez, e dará à luz a falsidade.
Salm
os 7:15 Abre uma cova, aprofundando-a, e cai na cova que fez.
Salm
os 7:16 A sua malvadez recairá sobre a sua cabeça, e a sua violência descerá sobre o seu crânio.
Salmos 7:17
Eu louvarei ao Senhor segundo a sua justiça, e cantarei louvores ao nome do Senhor, o Altíssimo.

Referências:


José Carlos Macoratti