18/09/2008 Development / asp.net

Mto bom e muito tranquilo de fazer!!!!

Iniciando as declarações no arquivo web.config

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="login.aspx" protection="All" timeout="30">
        <credentials passwordFormat="Clear">
          <user name="devhood" password="password"/>
          <user name="someguy" password="password"/>
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>

  <location path="admin/">
    <system.web>
      <authorization>
        <allow users="devhood" />
        <deny users="someguy" />
      </authorization>
    </system.web>
  </location>
  <location path="usersonly/">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
  <location path="public/">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>

Autenticação: Existe 4 tipos Windows|Forms|Passport|None

  • Forms: Esta tag indica o modo de autenticação de formulários e irá especificar as coisas como loginUrl, o tipo de proteção e o tempo limite de inatividade.
    • loginUrl: Quando um usuário não tem poderes para acessar perspectivas páginas, o usuário será enviada para este URL.
    • protection: Há quatro (4) tipos de proteção modos, All | none | Encryption|Validation.
    • timeout: Este é um valor inteiro indicando o número de minutos um cookie do usuário será válida para a autenticação. Após este período de inatividade, o usuário será forçado a re-autenticar.
    • credential: Esta é uma seção opcional se você quiser especificar o nome de usuário/senha em combinações aqui. As credenciais também tem um atributo chamado passwordFormat. Suas opções para a senha formato são: Clear|SHA1|MD5.
    • user: Esta é também uma tag opcional. Esta tag é bastante simples, atributo para o nome de usuário e senha para atribuir a senha.
    • authorization: Agora que temos nosso tipo especificado e a autenticação de contas de usuários, temos que especificar o modo como a autenticação vai ser aplicada ao nosso site. Nós usamos a authorization para isso. A autorização é inserida entre a system.web. No exemplo acima, vemos que a autorização  contém o <allow>. Isto irá permitir especificar os utilizadores que têm acesso ao site. E há também uma tag <deny> que irá especificar quais usuários estão negado o acesso. O formato dos usuários atributos é bem simples. É apenas uma vírgula delimitado por lista nomes de utilizador (ou seja, os usuários = "jsmith, jdoe, blá"). Há também dois valores especiais que podem ser utilizadas no atributo usuários. O primeiro é o * (asterisco). Esta é utilizada para designar "todos os acessos". Portanto, o exemplo acima permite o acesso a todos os usuários. A segunda é a ? (ponto de interrogação). Esta é utilizada para designar "anónimo" usuários. Você pode usar esse recurso para negar acesso anônimo que irá força para autenticar os usuários antes de entrar em algumas páginas Web.
    • location: Agora o que acontece quando nós queremos algumas partes do site a ser protegido e de outros a não ser protegido? ASP.NET usa <locations>.  Que é o caminho para aplicar um conjunto diferente de regras de segurança. No interior da tag, temos a tag system.web mais uma vez. A autorização é colocado dentro da tag system.web (tal como o uso de no primeiro <authorization>).

<html>
<head>
    <title>Login</title>
    <script language="C#" runat="server">
        void Login_Click(Object sender, EventArgs e) {
            if (FormsAuthentication.Authenticate(username.Text, password.Text))
                FormsAuthentication.RedirectFromLoginPage(username.Text, true);
            else
                status.InnerHtml += "Invalid Login";
        }
       
    </script>
</head>
<body>
    <p class=title>Login</p>
    <span id="status" class="text" runat="Server"/>
    <form runat="server">
    Username: <asp:textbox id=username cssclass="text" runat="Server"/><br />
    Password: <asp:textbox id=password textmode=Password cssclass="text" runat="Server"/><br />
    <asp:button id=login_button onclick="Login_Click" text="  Login  " cssclass="button" runat="Server"/>
    </form>
</body>
</html>

FormsAuthentication.Authenticate
O único botão de login na página da web chama o método Login_Click quando clicado. Neste método, usamos o FormsAuthentication.Authenticate (nome de usuário, senha) para obter ASP.NET para verificar as credenciais do usuário. Os parâmetros para este método é bastante simples e ele retorna apenas um valor booleano.
 
ou acesso através do Banco
 
void Login_Click(Object sender, EventArgs e) {
    String sHashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text,"MD5");
    String sqlStmt = "Select username from Users where username='" + UserName.Text + "' and password='" + sHashedPassword + "'";
    SqlConnection sqlConn = new SqlConnection("server=localhost;uid=sa;pwd=password;database=master;");
    SqlCommand sqlCmd = new SqlCommand(sqlStmt, sqlConn);
    sqlCmd.Connection.Open();
    SqlDataReader sqlReader = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);

    if (sqlReader.Read())
        FormsAuthentication.RedirectFromLoginPage(username.Text, true);
    else
        status.InnerHtml += "Invalid Login";
}