ASP .NET - Usando os novos modelos de Projeto


Nas versões anteriores do ASP .NET, os modelos de projetos forneciam somente uma estrutura simples com pouca orientação sobre como construir uma aplicação web de produção. Dessa forma, dependendo do cenário da sua aplicação web, você tinha que implementar certos recursos, como a autenticação de formulários, por exemplo desde o início.

Na nova versão, a ASP .NET 4 introduz novos modelos de projetos conforme podemos ver na figura a seguir:(Usando o Visual Web Developer)

Novos modelos da .NET Framework 4.0 -
Visual Web Developer 2010 Express Edition

Modelos existente na versão anterior : .NET Framework 3.5 -
Visual Web Developer 2008 Express Edition

O modelo Empty Web Application é um projeto Web Application é um projeto com um arquivo web.Config mínimo e despojado de qualquer recurso ou configuração.

Os outros novos modelos contém grandes alterações como por exemplo:

Vamos criar um novo projeto usando o modelo ASP .NET Web Application e analisar a sua estrutura.

Podemos fazer isso usando o Visual Studio 2010 ou o Visual Web Developer 2010 Express Edition. Eu vou usar o segundo de forma a que todos possam acompanhar o artigo.

Observando a janela Solution Explorer iremos ver a seguinte estrutura criada para a nossa aplicação ASP .NET:

Podemos notar na estrutura os recursos mencionados no início do arquivo da seguinte forma:

Examinando os recursos de MemberShip implementados

Na pasta Account você pode notar os arquivos .aspx que contém as páginas usadas para prover o login, o registro e a alteração de senha do usuário.

Observe o arquivo Web.Config existente na pasta Account , qual a sua função ?

<?xml version="1.0"?>
<configuration>

  <location path="Register.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>

</configuration>
Ao lado vemos o código definido no arquivo Web.Config da pasta Account.

Este arquivo Web.Config permite que usuários não autenticados acessar a página Register.aspx

O acesso a outras páginas esta limitado somente a usuários autenticados.

Não é necessário permissão para acessar a página Login.aspx visto que ele é definida como
página de login de autenticação de formulário tornando-a automaticamente acessível para
qualquer usuário.

- A página Login.aspx contém um controle Login com um modelo de leiaute personalizado.

- A master page Site.Master, localizada na raiz da aplicação, o controle LoginView para mostrar o status do login e fornecer o link para login/logout. Ao usar este controle na master page ele será renderizado em todas as páginas da aplicação que usarem a master page;

- O controle LoginView esta configurado para mostrar o nome do usuário logado, ou o link para a página de login, quando um usuário anônimo acessa o site;

- As páginas Register.aspx e ChangePassword.aspx também são implementados usando os controles de login ASP.NET;

- A página Register.aspx usa o controle CreateUserWizard para orientar o usuário durante o processo de registro, enquanto a página ChangePassword.aspx usa o controle ChangePassword;

- Todos os controles de login são configurados para usar autenticação de formulários com MemberShip SQL, Role e Profile provider. Essa configuração pode ser encontrado no Web.config localizado no diretório raiz da aplicação web, conforme mostrado a seguir:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

No Microsoft. NET Framework 4, os elementos de configuração importantes foram movidos para o arquivo machine.config, e as aplicações agora herdam estas configurações. Isso permite que o arquivo web.config seja bem reduzido.

Desde que você tenha criado uma aplicação web que inclui o módulo de autenticação, você vai ter as seções de configurações no arquivo Web.Config conforme mostrado acima. A tabela a seguir mostra os componentes e o correspondente elemento de configuração a que ele se aplica.

Componente Elemento de Configuração
Forms Authentication configuration/system.web/authentication
ASP.NET Membership configuration/system.web/membership
ASP.NET Profile configuration/system.web/profile
ASP.NET Role Management configuration/system.web/roleManager

Observe que temos uma seção de configuração <connectionString> que define a sequência de conexão que será usada por todos os SQL Providers pré-configurados.

<connectionStrings>
<add name="ApplicationServices"
    connectionString="
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
    providerName="System.Data.SqlClient" />
</connectionStrings>

Executando o projeto teremos:

A página de apresentação com o link para a página de Login - Login.aspx :

A página de login com o link para página Register.aspx onde o usuário pode se registrar:

A página de registro onde o usuário poderá ser criado:

A página principal apresentando o usuário logado:

E assim apresentamos o novo modelo de projeto Web Application que já incorpora diversos recursos importantes que você pode usar em seus projetos.

Eu sei é apenas ASP .NET , mas eu gosto...

"Falou-lhes pois Jesus outra vez, dizendo: Eu sou a luz do mundo; quem me segue não andará em trevas, mas terá a luz da vida." (João 8:12)

Referências:

José Carlos Macoratti