Páginas da Web ASP.NET - Objeto WebSecurity
Descrição
O Objeto WebSecurity fornece segurança e autenticação para aplicativos ASP.NET Web Pages.
Com o objeto WebSecurity você pode criar contas de usuário, fazer login e logout de usuários, redefinir ou alterar senhas e muito mais.
Referência de objeto WebSecurity - Propriedades
Properties | Description |
---|---|
CurrentUserId | Gets the ID for the current user |
CurrentUserName | Gets the name of the current user |
HasUserId | Returns true if the current has a user ID |
IsAuthenticated | Returns true if the current user is logged in |
Referência do Objeto WebSecurity - Métodos
Method | Description |
---|---|
ChangePassword() | Changes the password for a user |
ConfirmAccount() | Confirms an account using a confirmation token |
CreateAccount() | Creates a new user account |
CreateUserAndAccount() | Creates a new user account |
GeneratePasswordResetToken() | Generates a token that can be sent to as user by email |
GetCreateDate() | Gets the time the specified membership was created |
GetPasswordChangeDate() | Gets the date and time when password was changed |
GetUserId() | Gets a user ID from a user name |
InitializeDatabaseConnection() | Initializes the WebSecurity system (database) |
IsConfirmed() | Checks if a user is confirmed |
IsCurrentUser() | Checks if the current user matches a user name |
Login() | Logs the user in by setting a token in the cookie |
Logout() | Logs the user out by removing the token cookie |
RequireAuthenticatedUser() | Exits the page if the user is not an authenticated user |
RequireRoles() | Exits the page if the user is not a part of the specified roles |
RequireUser() | Exits the page if the user is not the specified user |
ResetPassword() | Changes a user's password using a token |
UserExists() | Checks if a given user exists |
Inicializando o banco de dados WebSecurity
Você deve criar ou inicializar um banco de dados WebSecurity antes de poder usar o objeto WebSecurity em seu código.
Na raiz da sua web, crie uma página (ou edite a página ) chamada _AppStart.cshtml .
Coloque o seguinte código dentro do arquivo:
_AppStart.cshtml
@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile",
"UserId", "Email", true);
}
O código acima será executado sempre que o site (aplicativo) for iniciado. Ele inicializa o banco de dados WebSecurity.
"Users" é o nome do banco de dados WebSecurity (Users.sdf).
"UserProfile" é o nome da tabela de banco de dados que contém as informações do perfil do usuário.
"UserId" é o nome da coluna que contém os IDs de usuário (chave primária).
"E-mail" é o nome da coluna que contém os nomes de usuário.
O último parâmetro true é um valor booleano que indica que o perfil do usuário e as tabelas de associação devem ser criados automaticamente se não existirem, caso contrário false .
Embora true indique a criação automática das tabelas do banco de dados, o próprio banco de dados não será criado automaticamente. Deve existir.
O banco de dados WebSecurity
A tabela UserProfile contém um registro para cada usuário, com um ID do usuário (chave primária) e o nome do usuário (e-mail):
UserId | |
---|---|
1 | [email protected] |
2 | [email protected] |
3 | [email protected] |
A tabela Membership conterá informações de associação sobre quando o usuário foi criado e se (e quando) a associação foi confirmada.
Muito parecido com isso (algumas colunas não são mostradas):
User Id |
Create Date |
Confirmation Token |
Is Confirmed |
Last Password Failure |
Password | Password Change |
---|---|---|---|---|---|---|
1 | 12.04.2012 16:12:17 | NULL | True | NULL | AFNQhWfy.... | 12.04.2012 16:12:17 |
Configuração de associação simples
Você pode obter erros usando o objeto WebSecurity, se seu site não estiver configurado para usar o sistema de associação de páginas da Web ASP.NET SimpleMembership .
Isso pode ocorrer se o servidor de um provedor de hospedagem estiver configurado de forma diferente do seu servidor local. Para corrigir isso, adicione o seguinte elemento ao arquivo Web.config do site:
<appSettings>
<add key="enableSimpleMembership" value="true" />
</appSettings>