ASP.NET – Membership pt.2 e Permissões
Estamos de volta com mais um tutorial sobre ASP.NET. Hoje iremos falar das propriedades do Membership e de permissões. Fiquem atentos e participem neste brainstorming de programação.
No último tutorial o utilizador João Rodrigues, mencionou e bem, que era necessário configurar certas propriedades para que o Membership funcione correctamente. Em baixo podemos ver em detalhe as definições dessas propriedades.
Estas propriedades podem ser encontradas na estrutura Membership no web.config.
1.Propriedades Membership
- ApplicationName: Especifica o nome da aplicação em que o Membership está a ser utilizado, possibilitando desta forma, trabalhar com múltiplas aplicações utilizando a mesma base de dados, mas podendo também utilizar o mesmo nome da aplicação para outras aplicações ASP.NET. Importante para possibilitar a migração de utilizadores entre servidores.
- EnablePasswordReset: Especifica se será ou não permitido reinicialização da senha do utilizador. Se True, o provider permitirá a reinicialização.
- EnablePasswordRetrieval: Especifica se será ou não permitido a recuperação da password do utilizador. Se True, o provider permitirá a recuperação.
- HashAlgorithmType: Utilizado para especificar o algoritmo de hashing que será utilizado pelo provider, para encriptar dados sensíveis.
- MaxInvalidPasswordAttempts: Define o número de tentativas de acesso até que a conta do utilizador seja bloqueada. O resultado dá-se da soma de tentativas inválidas de recuperação da palavra-chave ou senha.
- MinRequiredNonAlphanumericCharacters: Define o número de caracteres especiais que a senha deverá conter, não podendo ser definido com um valor menor que 0 ou maior que 128 ou ainda maior que o valor definido no atributo minRequiredPasswordLength.
- MinRequiredPasswordLength: Define o número mínimo de caracteres para a senha. Também não pode ser definido com um valor menor que 0 ou maior que 128.
- PasswordAttemptWindow: Define o intervalo de tempo em que é efectuada a contabilidade de tentativas de login falhadas. Quando chegamos ao fim do intervalo especificado neste atributo e o número de tentativas falhadas não atingiu o valor definido no atributo maxInvalidPasswordAttempts, os contadores são reinicializados.
- PasswordStrengthRegularExpression: Especifica uma expressão regular para validar uma senha e esta expressão deverá funcionar com a classe RegEx.
- RequiresQuestionAndAnswer: Indica se é ou não necessário informar uma pergunta e sua respectiva palavra-chave para que isso funcione como uma espécie de "lembrete" para o utilizador.
- UserIsOnlineTimeWindow: Define o tempo em que utilizador é considerado como online, é utilizado para calcular o número aproximado de usuários online.
- DefaultProvider: O nome do provider que vai utilizar. Lembrando que no elemento providers podemos especificar uma lista deles e é através do defaultProvider que especificamos qual deles utilizar.
2. Permissões
No ultimo tutorial criamos o utilizador "Admin" e associamos o utilizador ao Role Admin. Também restringimos o acesso à pasta Admin da nossa aplicação apenas para utilizadores dentro desse Role. Hoje vamos por essas configurações em prática.
Vamos adicionar uma nova página dentro da pasta Admin, chamada Admin.aspx.
Depois de adicionada a página vamos ficar com um markup semelhante a este (Adicionar o texto "Página de administração")
De seguida vamos abrir a página "Site.Master", está página é a chamada Master Page. Procuramos a tag Menu e vamos adiciona a linha a vermelho, que vai permitir colocar mais uma opção no menu. A única propriedade relevante é a "NavigateUrl" que indica para onde somos redireccionados ao clicar no item do menu.
Ao abrir a aplicação podemos ver o novo item no menu. Ao clicar nesta opção podemos ver que aparece o ecrã de login, pois só podemos ver esta página se estivermos "logados" como administradores.
Para ficar ainda mais profissional podemos escrever um pouco de código, este código vai esconder este novo item do menu caso o utilizador não seja administrador. Este código é colocado no evento Page_Load da página Site.Master. O método "Roles.IsUserInRole" é fornecido pela Framework e pode ser encontrado no namespace System.Web.Security. O que este métod faz é verificar se um utilizador pertence a um determinado Role, neste caso Admin. Caso o resultado seja negativo removemos o item do menu, ficando assim sem a opção Admin no menu.
Com esta alteração se não tivermos feito o login o novo item não aparece.
Depois de fazer o login o item aparece e vemos a nova página que criamos. Como podemos confirmar só podemos aceder a esta página se estivermos no Role de Administradores.
5. Conclusão
Por hoje damos o tutorial por terminado. Em baixo podem fazer download do projecto (Visual Studio 2010). Caso tenham alguma questão já sabem, deixem um comentário em baixo.
Download: GoodToWork [ 2.27Mb ]
Este artigo tem mais de um ano
não sei se é de propósito mas o artigo aparece todo na pagina principal…
Foi de propósito sem querer 😉
Obrigado pelo reparo.
pimeiro post?
primeira asneira! lol tá o artigo todo na 1ª pag.
já so vais receber meia “sandes de torresmo” este mês!
Aselhice.
Bom Post.
Excelente tutorial…
Este artigo vai-me ajudar a relembrar o Membership porque tenho que passar a autenticação do SharePoint 2010 para FBA. Vou ter que criar um conjunto de webparts para conseguir gerir os utilizadores.
Muito bom.
Era o que eu precisava.
Continue assim.
Abraços!
Alguem sabe como é que podemos configurar este acesso para ir buscar os dados do utilizador a Active Directory e caso o utilizador pertença a determinado grupo, efectuar o login automatico?
Quero criar uma BD para gestão dos equipamentos informaticos e ando um pouco “as escuras” de como começar a parte de criação do GUI para a BD criada em SQL.