Novos recursos de segurança no ASP.NET 2.0

Stephen Walther
Microsoft Corporation

Junho de 2004

Aplica-se a:

- Microsoft ASP.NET 2.0
- Microsoft ASP.NET framework
- Microsoft SQL Server
- Microsoft Visual Studio .NET

Resumo: O ASP.NET 2.0 inclui diversos recursos novos para facilitar ainda mais a proteção de seus aplicativos ASP.NET. Veja como usar os novos controles, ferramentas e APIs para controlar o acesso a páginas e facilitar o armazenamento de informações sobre os usuários. (15 páginas impressas)

Nesta página

Segurança e o modelo de provedor
Usando a Web Site Administration Tool para configurar a segurança
Usando os controles de logon para criar páginas de segurança padrão
Trabalhando diretamente com a API Membership
Conclusão

O ASP.NET 2.0 se baseia no ASP.NET 1.x para permitir que você crie e gerencie usuários com mais facilidade e proteja com senha as páginas de um aplicativo da Web. A nova estrutura inclui novos recursos para trabalhar com autenticação e autorização, projetados para satisfazer a administradores e desenvolvedores de sites.

Os administradores de sites podem aproveitar a nova Web Site Administration Tool para criar novos usuários e funções e para controlar o acesso a páginas em um aplicativo da Web. A Web Site Administration Tool é um conjunto de páginas ASP.NET pré-escritas que podem ser usadas por pessoas sem conhecimentos de programação para configurar um aplicativo da Web.

Os desenvolvedores podem aproveitar os novos controles Login para criar rapidamente páginas relacionadas à segurança em um aplicativo da Web. Por exemplo, um desenvolvedor pode criar uma página de logon simplesmente arrastando um controle Login para uma página .aspx. Ao aproveitar os controles Login, um desenvolvedor pode criar uma página de logon, uma página de registro ou uma página de recuperação de senha sem escrever nenhum código.

Por fim, a estrutura do ASP.NET 2.0 contém novos recursos de segurança que agradarão a desenvolvedores avançados. A nova API Membership é um conjunto de classes que contêm métodos para criação e recuperação de informações sobre usuários do aplicativo. Além disso, a nova estrutura contém classes que facilitam o trabalho com funções de usuários personalizadas.

Segurança e o modelo de provedor

A maior alteração que você perceberá com a estrutura do ASP.NET 2.0 é que a segurança simplesmente funciona. Com a nova estrutura, você pode começar a registrar e a autenticar usuários em relação a um banco de dados de usuários imediatamente após habilitar a autenticação Forms, sem criar qualquer tabela de banco de dados ou escrever nenhum código. Isso é possível porque a estrutura do ASP.NET 2.0 usa o modelo de provedor para obter segurança.

O modelo de provedor — que é usado em toda a estrutura do ASP.NET 2.0 — oferece a você um método padrão de conectar componentes que implementam diferentes serviços para seu aplicativo. A estrutura do ASP.NET 2.0 usa dois tipos de provedores para segurança: o provedor Membership e o provedor Role. O provedor Membership é usado para armazenar nomes de usuários e senhas; o provedor Role é usado para armazenar funções de usuários.

O provedor Membership padrão é AccessMembershipProvider. Ele armazena nomes de usuários e senhas em um banco de dados Microsoft Access. O banco de dados Access é criado automaticamente para você na pasta Data do seu aplicativo (se você acidentalmente excluir o banco de dados Access, ele será recriado automaticamente da próxima vez que você tentar se conectar ao banco de dados). Sempre que você criar um novo aplicativo da Web, o provedor Access criará automaticamente tudo de que você precisar para começar a autenticar usuários.

A estrutura do ASP.NET 2.0 inclui dois provedores Membership: o AccessMembershipProvider padrão e um SqlMembershipProvider. Se desejar armazenar informações de participação em um banco de dados Microsoft SQL Server, você poderá configurar seu aplicativo para usar SqlMembershipProvider sem rescrever qualquer código do aplicativo (as etapas para habilitar SqlMembershipProvider são discutidas na próxima seção).

Você também pode criar um provedor Membership personalizado. Por exemplo, você pode armazenar informações de participação em um arquivo XML, um banco de dados FoxPro ou um banco de dados Oracle. Você pode até mesmo implementar um provedor Membership que recupere informações de participação por meio de um serviço da Web. Se desejar criar seu próprio provedor Membership, você precisará implementar todos os métodos e propriedades da classe MembershipProvider abstrata (um provedor Membership é nada mais do que uma instância da classe base MembershipProvider).

Usando o SqlMembershipProvider

O uso de um banco de dados Access é satisfatório quando você está no processo de desenvolver um aplicativo da Web ou quando você está desenvolvendo um aplicativo destinado a ser usado por um pequeno número de pessoas. No entanto, se precisar criar um aplicativo mais robusto, você desejará armazenar nomes de usuários e senhas em um banco de dados mais escalonável, como o Microsoft SQL Server.

Se desejar armazenar informações de participação em um banco de dados Microsoft SQL Server em vez de no banco de dados Microsoft Access padrão, você precisará modificar o provedor Membership padrão para seu aplicativo. O seguinte arquivo Web.Config de aplicativo define AspNetSqlProvider como o provedor Membership padrão:

<configuration>
<system.web>
<membership defaultProvider="AspNetSqlProvider" />
</system.web>
</configuration>

Se não desejar atualizar o arquivo Web.Config do seu aplicativo manualmente, você poderá alternar provedores por meio da Web Site Administration Tool (descrita na próxima seção) ou por meio do snap-in MMC (Microsoft Management Console) ASP.NET para Serviços de Informação da Internet. Ambas as ferramentas oferecem a você uma interface amigável para especificar o provedor Membership.

Ao contrário do provedor Microsoft Access, antes de poder usar o provedor SQL você deve criar as tabelas de banco de dados e os procedimentos armazenados necessários. Você pode criar automaticamente todos os objetos do banco de dados SQL Server executando a ferramenta aspnet_regsql pela linha de comando (consulte a figura 1). Por padrão, essa ferramenta cria um novo banco de dados chamado aspnetdb na instância local do SQL Server.

whidbeysecurity_fig01.gif

Figura 1. Configurando o SqlMembershipProvider

Após criar o novo banco de dados, você deverá se certificar de que o banco de dados possa ser acessado pelo aplicativo ASP.NET. Por padrão, a segurança integrada é usada. Assim, você se certificará de que a conta ASP.NET (a conta NT AUTHORITY\NETWORK SERVICE no caso do Windows Server 2003 ou a conta ASPNET no caso do Windows 2000 ou XP) tenha as permissões necessárias para acessar o banco de dados aspnetdb.

Configurando propriedades do provedor Membership

AccessMembershipProvider e SqlMembershipProvider dão suporte a diversos atributos específicos do provedor:

  • applicationName — Se precisar hospedar diversos aplicativos no mesmo servidor Web, você poderá usar essa propriedade para isolar os usuários associados aos diferentes aplicativos.
  • connectionStringName — O nome de uma seqüência de conexão de banco de dados definida na seção connectionStrings do arquivo de configuração da Web.
  • description — Uma descrição da definição do provedor.
  • enablePasswordReset — Quando true, os usuários podem redefinir suas senhas para uma senha gerada aleatoriamente.
  • enablePasswordRetrieval — Quando true, as senhas dos usuários podem ser recuperadas pelo provedor Membership.
  • passwordFormat — Essa propriedade tem três valores possíveis: Clear, Encrypted e Hashed. Quando as senhas são hashed, as senhas originais não podem ser recuperadas pelo provedor Membership.
  • requiresQuestionAndAnswer — Quando true, o usuário deve responder a uma pergunta de recuperação de senha antes de redefinir ou recuperar a senha.
  • requiresUniqueEmail — Quando true, um endereço de email exclusivo deve ser associado a cada usuário.

Você pode usar esses atributos do provedor Membership para controlar como as informações de participação são armazenadas e recuperadas do banco de dados. Os valores desses atributos podem ser alterados no arquivo de configuração da Web do seu aplicativo.

Por exemplo, o atributo passwordFormat determina como as senhas são armazenadas no banco de dados. Você tem a opção de armazenar senhas em texto sem formatação, senhas criptografadas e valores de hash de senhas. Por motivos de segurança, você pode armazenar valores de hash em vez de senhas reais no banco de dados, para que, caso o aplicativo da Web seja comprometido, os hackers não possam roubar as senhas reais dos usuários.

Observe também que você pode permitir ou impedir que as senhas de usuários sejam recuperadas do banco de dados por meio da definição do atributo enablePasswordRetrieval. Novamente, por questões de segurança, você pode não desejar que os usuários recuperem suas senhas.

Usando a Web Site Administration Tool para configurar a segurança

A Web Site Administration Tool incluída na estrutura do ASP.NET 2.0 permite que você configure um aplicativo ASP.NET totalmente por meio de uma interface de página da Web (consulte a figura 2). Você pode usar a Web Site Administration Tool para criar e gerenciar usuários e funções e controlar o acesso a pastas e páginas individuais em um aplicativo da Web (a Web Site Administration Tool também pode ser usada para configurar diversos outros aspectos de um aplicativo da Web).

Cc580617.whidbeySecurity_fig02thumb(pt-br,MSDN.10).gif

Figura 2. Usando a Web Site Administration Tool

Há diversas maneiras de navegar para a interface de administração da Web. Se estiver criando um aplicativo da Web no Visual Studio .NET 2005, você poderá abrir a Web Site Administration selecionando ASP.NET Configuration no menu Website. Se estiver desenvolvendo um aplicativo da Web fora do Visual Studio .NET, você poderá navegar diretamente para a Web Site Administration Tool solicitando a página especial WebAdmin.axd. Por exemplo, se o seu aplicativo estiver localizado em um diretório virtual chamado MyWebApp na máquina local, você poderá abrir a Website Administration Tool do seu aplicativo inserindo a seguinte URL no navegador da Web.

http://localhost/MyWebApp/WebAdmin.axd

Você também pode usar esse último método para acessar a Web Site Administration Tool para um aplicativo implantado.

Nos bastidores, a Web Site Administration Tool é composta de uma série de páginas ASP.NET que usam controles Login padrão discutidos na próxima seção. Essas páginas estão localizadas na pasta inetpub\wwwroot\aspnet_webadmin. Se, por algum motivo, esses arquivos forem excluídos acidentalmente de um servidor, você poderá reinstalá-los automaticamente executando a ferramenta aspnet_regiis. A ferramenta aspnet_regiis também pode ser usada para controlar o acesso à Web Site Administration Tool. Por exemplo, com a ferramenta aspnet_regiis você pode restringir o acesso à Web Site Administration Tool somente ao servidor local.

Usando os controles de logon para criar páginas de segurança padrão

O ASP.NET 2.0 contém um novo conjunto de controles relacionados à segurança, conhecidos em conjunto como controles Login. Ao aproveitar os controles Login, você pode criar páginas padrão de registro, de logon e de recuperação de senha sem escrever nenhum código.

Você pode usar os controles Login para exibir diferentes informações para os usuários, dependendo de suas funções e de seu status de autenticação atual. Por exemplo, o controle LoginView permite que você defina diferentes modelos que são exibidos para membros de diferentes funções. Você pode usar esse controle, por exemplo, para exibir informações para membros da função Administradores diferentes daquelas exibidas para membros da função Convidados.

Nos bastidores, os controles Login fazem uso do modelo de provedor. Se você tiver configurado o aplicativo para usar AccessMembershipProvider, os controles Login consultarão automaticamente um banco de dados Microsoft Access para recuperar informações de participação. Se SqlMembershipProvider estiver habilitado, o banco de dados SQL configurado será usado pelos controles.

Antes de usar um dos controles Login, você deve habilitar a autenticação Forms do aplicativo. Isso pode ser feito por meio da modificação do arquivo de configuração da Web do seu aplicativo ou por meio da Web Site Administration Tool.

Usando o controle Login

O controle Login permite que você crie uma página de logon padrão simplesmente adicionando uma única marca a uma página.

<asp:Login ID="Login1" Runat="server" />

O controle Login gera automaticamente uma interface de logon padrão. Por padrão, a interface não é muito atraente, mas você pode melhorar rapidamente a aparência do controle Login no Visual Studio .NET 2005 clicando com o botão direito e selecionando AutoFormat (consulte a figura 3). Observe que você obtém caixas de texto de nome de usuário e de senha padrão, uma caixa de seleção "remember me" (lembrar) e um botão de envio.

whidbeysecurity_fig03.gif

Figura 3. Criando uma interface de logon com o controle Login

O controle Login não apenas fornece a interface; ele realmente funciona! Quando você envia seu nome de usuário e sua senha por meio de um controle Login, suas credenciais são validadas automaticamente pelo provedor Membership configurado.

Há uma lista imensa de propriedades associadas ao controle Login. A grande maioria dessas propriedades simplesmente permite que você controle diferentes aspectos da aparência da interface de logon. Por exemplo, você pode usar as diversas propriedades FailureText para controlar o conteúdo e a aparência do texto exibido quando um logon falha. Além disso, você pode usar as propriedades CreateUserUrl e PasswordRecoveryUrl para criar links para uma página de registro e uma página de recuperação de senha.

Uma das propriedades mais valiosas incluídas no controle Login é a propriedade VisibleWhenLoggedIn. Ela permite que você oculte automaticamente o controle Login quando o usuário já estiver autenticado. Por exemplo, você pode desejar incluir o controle Login na parte superior de todas as páginas do aplicativo da Web. Ao usar a propriedade VisibleWhenLoggedIn, você pode ocultar automaticamente o controle Login assim que um usuário estiver autenticado.

Usando o controle CreateUserWizard

O controle CreateUserWizard permite que você crie uma página de registro de usuário padrão. Simplesmente adicionando a marca a seguir a uma página, você pode permitir que novos usuários se registrem no site.

<asp:CreateUserWizard ID="CreateUserWizard1" Runat="server" />

A aparência exata da interface gerada por CreateUserWizard depende das configurações do provedor Membership do seu aplicativo. Por exemplo, as caixas de texto de uma pergunta e resposta de senha aparecem somente quando o atributo requiresQuestionAndAnswer do provedor Membership tem o valor true. A página de registo na figura 4 é gerada quando CreateUserWizard é usado com o provedor Membership AspNetAccessProvider padrão.

whidbeysecurity_fig04.gif

Figura 4. Registrando novos usuários com o controle CreateUserWizard

Uma das coisas mais interessantes que você pode fazer com o controle CreateUserWizard é enviar automaticamente um email de registro depois que o usuário completar todas as etapas de registro. Por exemplo, você pode enviar um email que agradeça ao usuário por se registrar no seu site. O email pode conter informações como o nome de usuário e a senha registrados do usuário.

Você configura o email enviado pelo controle CreateUserWizard atribuindo valores à propriedade MailDefinition do controle. A propriedade MailDefinition representa uma instância da classe MailDefinition que contém todas as propriedades exigidas para definir um email.

Por exemplo, o controle CreateUserWizard a seguir enviará o conteúdo do arquivo RegistrationEmail.txt como corpo do email de registro sempre que alguém completar o assistente de registro (CreateUserWizard usa o servidor de email especificado pela seção <smtpMail> do arquivo de configuração da Web ao enviar emails).

<asp:CreateUserWizard ID="CreateUserWizard1" Runat="server">
<MailDefinition BodyFileName="~/RegistrationEmail.txt" From="YourSite@YourDomain.com"Subject="Thanks for registering!">
</MailDefinition>
</asp:CreateUserWizard>

No arquivo RegistrationEmail.txt você pode usar expressões especiais, como <% UserName %> e <% Password %>, a serem substituídas pelo nome de usuário e a senha registrados do novo usuário no corpo do email.

A funcionalidade de email do controle CreateUserWizard também pode ser útil em situações de registro mais complicadas, em que você deve validar o endereço de email de um usuário antes de fornecer a ele acesso a seu aplicativo da Web. Se você habilitar a propriedade AutoGeneratePassword do controle CreateUserWizard, o controle gerará aleatoriamente uma senha para o usuário. Ao aproveitar a funcionalidade de email do controle CreateUserWizard, você pode enviar automaticamente a senha gerada aleatoriamente para o usuário. Se o usuário em seguida se autenticar no aplicativo da Web usando a senha enviada, você saberá que o usuário deve ter fornecido um endereço de email válido.

Usando o controle PasswordRecovery

O controle PasswordRecovery permite que usuários do seu aplicativo da Web solicitem um lembrete por email com suas senhas (consulte a figura 5). Como no caso do controle CreateUserWizard, você define as propriedades do email enviado ao usuário por meio da propriedade MailDefinition.

whidbeysecurity_fig05.gif

Figura 5. Enviando uma senha por email com o controle PasswordRecovery

Por exemplo, a marca a seguir adiciona um controle PasswordRecovery a uma página que envia um email pela conta YourSite@YourDomain.com.

<asp:PasswordRecovery ID="PasswordRecovery1" Runat="server">
<MailDefinition From="YourSite@YourDomain.com" Subject="Password Reminder">

O controle PasswordRecovery tem diferentes comportamentos, dependendo da configuração do provedor Membership padrão. Quando o atributo enablePasswordRetrieval tem o valor true e o atributo passwordFormat não tem o valor Hashed, a senha em texto sem formatação original do usuário é enviada no email. No caso de quase todas as outras combinações de atributos, a senha é redefinida para uma seqüência de caracteres gerada aleatoriamente antes de ser enviada para o usuário.

Usando o controle ChangePassword

O controle ChangePassword permite que os usuários alterem suas senhas registradas. O controle gera caixas de texto para inserção da senha original e de uma senha nova (consulte a figura 6).

whidbeysecurity_fig06.gif

Figura 6. Alterando sua senha com o controle ChangePassword

Como os controles CreateUserWizard e PasswordRecovery, o controle ChangePassword inclui uma propriedade MailDefinition. Quando valores são atribuídos à propriedade MailDefinition, o controle ChangePassword envia automaticamente um email para o usuário quando uma senha é alterada com êxito.

A marca a seguir declara uma instância do controle ChangePassword e define a propriedade MailDefinition.

<asp:ChangePassword ID="ChangePassword1" Runat="server">
<MailDefinition BodyFileName="~/ChangePasswordEmail.txt" From=YourSite@YourDomain.com Subject="Your Updated Password">
</MailDefinition>
</asp:ChangePassword>

A propriedade BodyFileName contém o caminho para um arquivo de texto que contém o corpo da mensagem de email enviada para o usuário. No arquivo de texto, você pode usar expressões especiais, como <% UserName %> e <% Password %>, para exibir o nome de usuário registrado e a senha alterada no email.

Usando os controles LoginName e LoginStatus

Os controles LoginName e LoginStatus permitem que você exiba informações sobre o status atual de um usuário. Depois que um usuário faz logon no seu aplicativo, o controle LoginName exibe o nome do usuário registrado. Se um usuário não tiver sido autenticado com Forms, o controle LoginName não exibirá absolutamente nada. Você declara o controle LoginName em uma página da seguinte maneira.

<asp:LoginName ID="LoginName1" Runat="server" />

Por outro lado, LoginStatus permite que um usuário faça logon e logoff no aplicativo da Web. O controle exibe um de dois links. Se o usuário não estiver autenticado, será exibido um link para a página Login.aspx. Se usuário já estiver autenticado, será exibido um link que permitirá que o usuário faça logoff. Você declara o controle LoginStatus da seguinte maneira.

<asp:LoginStatus ID="LoginStatus1" Runat="server" />

Usando o controle LoginView

O último controle Login, chamado LoginView, permite que você exiba diversos tipos de conteúdo de acordo com a função do usuário atual. Por exemplo, diversos sites exibem informações diferentes em suas páginas iniciais, dependendo de o usuário ser novo ou registrado. Os usuários novos podem ter uma visão geral do objetivo do site, enquanto os usuários registrados podem ver informações voltadas especialmente para eles.

Aqui está um exemplo de como você pode usar o controle LoginView para exibir conteúdo para um usuário anônimo diferente do exibido para um usuário autenticado.

<asp:LoginView ID="LoginView1" Runat="server">
<LoggedInTemplate>
Welcome back <asp:LoginName ID="LoginName1" Runat="server" />
</LoggedInTemplate>
<AnonymousTemplate>
Welcome to our Web site! If you were a registered user, you could view some really interesting stuff right now!

</AnonymousTemplate>

</asp:LoginView>

Um usuário anônimo vê todo o conteúdo em AnonymousTemplate. Um usuário autenticado, por outro lado, vê todo o conteúdo em LoggedInTemplate.

Se habilitar funções personalizadas para seu aplicativo da Web, você poderá usar o controle LoginView para exibir conteúdo que só possa ser exibido por membros de determinadas funções. Por exemplo, imagine que você tenha usado a Web Site Administration Tool para criar uma nova função chamada Administrators. Nesse caso, você usaria o controle LoginView para exibir o conteúdo que só pode ser visto por membros da função Administrators, desta maneira.

asp:LoginView ID="LoginView1" Runat="server">

<RoleGroups>

<asp:RoleGroup Roles="Administrators">

<ContentTemplate>

Secret stuff for administrators!

</ContentTemplate>

</asp:RoleGroup>

</RoleGroups>

<LoggedInTemplate>

Welcome back <asp:LoginName ID="LoginName1" Runat="server" />

</LoggedInTemplate>

<AnonymousTemplate>

Welcome to our Web site! If you were a registered user, you could view some really interesting stuff right now!

</AnonymousTemplate>

</asp:LoginView>

Os membros da função Administrators poderiam ver qualquer conteúdo da <ContentTemplate> associada ao RoleGroup Administrators. No entanto, um membro da função Administrators não poderia ver o conteúdo declarado nos modelos LoggedInTemplate ou Anonymous. Você só pode ver o conteúdo de um único modelo, mesmo que mais de um modelo se aplique a você.

Trabalhando diretamente com a API Membership

Há situações em que você precisa de um nível maior de controle sobre as participações do que o fornecido pela Web Site Administration Tool ou pelos controles Login. Nessas situações, você pode trabalhar diretamente com a API Membership.

A API Membership é exposta por meio da classe Membership. A classe Membership inclui métodos que permitem que você execute ações como criar novos usuários, alterar senhas e procurar usuários que correspondam a um determinado critério. Nos bastidores, os controles Login usam esses métodos para interagir com o provedor Membership configurado.

Aqui está uma lista dos métodos mais importantes da classe Membership:

  • CreateUser — Permite que você crie novos usuários.
  • DeleteUser — Permite que você exclua usuários existentes.
  • FindUsersByEmail — Permite que você recupere uma coleção de usuários que correspondam a um determinado endereço de email.
  • FindUsersByName — Permite que você recupere uma coleção de usuários que correspondam a um determinado nome de usuário.
  • GeneratePassword — Permite que você gere uma senha aleatória.
  • GetAllUsers — Permite que você recupere todos os usuários armazenados no provedor Membership.
  • GetNumberOfUsersOnlin — Permite que você retorne o número de usuários que acessam o aplicativo da Web no momento.
  • GetUser — Permite que você recupere as informações de participação associadas ao usuário atual ou permite que você recupere informações de participação associadas a um usuário que tenha o nome de usuário fornecido.
  • GetUsernameByEmail — Permite que você recupere um nome de um usuário que tenha um determinado endereço de email.
  • UpdateUser — Permite que você atualize as informações de um determinado usuário.
  • ValidateUser — Permite que você autentique um usuário em relação ao provedor Membership.

Esses métodos são extremamente poderosos. Por exemplo, com o método CreateUser, você pode criar um novo usuário com uma única linha de código.

// C#
Membership.CreateUser( "Ruth", "Secret" );
' VB.NET
Membership.CreateUser( "Ruth", "Secret" )

Essa declaração cria um novo usuário chamado Ruth, com a senha Secret.

Diversos métodos de Membership, como GetAllUsers e FindUsersByName, retornam coleções de objetos MembershipUser. A classe MembershipUser representa informações sobre um determinado usuário. Essa classe tem as seguintes propriedades:

  • Comment — Representa um comentário arbitrário associado ao usuário.
  • CreationDate — Representa a data em que o usuário foi criado.
  • Email — Representa o endereço de email do usuário.
  • IsApproved — Representa se o usuário foi aprovado ou não.
  • IsOnline — Representa se o usuário está ou não acessando o aplicativo da Web no momento.
  • LastActivityDate — Representa a data em que o usuário acessou o aplicativo da Web pela última vez.
  • LastLoginDate — Representa a data em que o usuário foi autenticado pela última vez.
  • LastPasswordChangedDate — Representa a data em que a senha do usuário foi alterada pela última vez.
  • PasswordQuestion — Representa a pergunta de senha usada com a pergunta e resposta de senha.
  • Provider — Representa o provedor Membership.
  • Username — Representa o nome de usuário.

A classe MembershipUser também inclui os seguintes métodos:

  • ChangePassword — Permite que você altere a senha do usuário.
  • ChangePasswordQuestionAndAnswer — Permite que você altere a pergunta e a resposta de senha.
  • GetPassword — Permite que você altere a senha do usuário.
  • ResetPassword — Permite que você redefina a senha do usuário.

Você pode usar as propriedades da classe MemberUser para exibir informações sobre os usuários do aplicativo da Web. Por exemplo, a página ASP.NET na Listagem 1 exibe o nome de usuário, o endereço de email, a data da última atividade e o status online de cada usuário em um controle GridView (consulte a figura 7).

Cc580617.whidbeysecurity_fig07(pt-br,MSDN.10).gif

Figura 7. Exibindo informações de participação com a API Membership

Listagem 1. DisplayMembers.aspx (C#)

<%@ Page Language="C#" %>
<script runat="server">
void Page_Load() {
grdUsers.DataSource = Membership.GetAllUsers();
grdUsers.DataBind();
}
</script>
<html>
<head runat="server">
<title>Display Members</title>
</head>
<body>
<form runat="Server">
<asp:GridView ID="grdUsers" AutoGenerateColumns="false" Runat="Server">
<Columns>
<asp:BoundField HeaderText="Username" DataField="Username" />
<asp:BoundField HeaderText="Email" DataField="Email" />
<asp:BoundField HeaderText="Last Activity Date" DataField="LastActivityDate" DataFormatString="{0:d}" />
<asp:CheckBoxField HeaderText="Is Online" DataField="IsOnline" />
</Columns>
</asp:GridView>
</form>
</body>
</html>

Listagem 1. DisplayMembers.aspx (Visual Basic .NET)

<%@ Page Language="VB" %>
<script runat="server">
Sub Page_Load()
grdUsers.DataSource = Membership.GetAllUsers()
grdUsers.DataBind()
End Sub
</script>
<html>
<head id="Head1" runat="server">
<title>Display Members</title>
</head>

<body>

<form id="Form1" runat="Server">

<asp:GridView ID="grdUsers" AutoGenerateColumns="false" Runat="Server">

<Columns>

<asp:BoundField HeaderText="Username" DataField="Username" />

<asp:BoundField HeaderText="Email" DataField="Email" />

<asp:BoundField HeaderText="Last Activity Date" DataField="LastActivityDate" DataFormatString="{0:d}" />

<asp:CheckBoxField HeaderText="Is Online" DataField="IsOnline" />

</Columns>

</asp:GridView>

</form>

</body>

</html>

[Text]

Os usuários são limitados ao controle GridView no método Page_Load. A lista de usuários é recuperada por meio do método GetAllUsers na classe Membership.

Conclusão

A estrutura do ASP.NET 2.0 inclui recursos de segurança significativos que agradarão tanto aos administradores quanto aos desenvolvedores de sites. A nova Web Site Administration Tool permite que você crie e gerencie usuários totalmente por meio de uma interface de formulário da Web. Os novos controles Login permitem que você crie páginas de segurança de site padrão sem escrever uma única linha de código. Por fim, a API Membership oferece a você um conjunto de métodos para manipulação de informações de participação por meio de código.

Livros relacionados

ASP.NET Unleashed
A First Look at ASP.NET V. 2.0
ASP.NET 2.0 Revealed

Sobre o autor

Stephen Walther escreveu o best-seller sobre ASP.NET, ASP.NET Unleashed. Ele também foi o arquiteto e desenvolvedor líder do ASP.NET Community Starter Kit, um aplicativo ASP.NET de exemplo produzido pela Microsoft. Ele fornece treinamento sobre ASP.NET a empresas de todos os Estados Unidos, incluindo a NASA e a Microsoft, por meio de sua empresa, a Superexpert (http://www.superexpert.com/).

Mostrar: