Login Em C#

ButterflyEffect

Power Member
Codigo no Login.aspx.cs

SqlConnection
mycon = newSqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["IGMConnectionString"].ConnectionString);
SqlDataAdapter adapter = newSqlDataAdapter("SELECT cod_utilizador FROM utilizadores WHERE login LIKE '" + login.SelectedItem + "' AND password LIKE '" + password.Text + "'", mycon);
DataSet dataset1 = newDataSet();
mycon.Open();
adapter.Fill(dataset1,
"utilizadores");
mycon.Close();
if (dataset1.Tables["utilizadores"].Rows.Count > 0)
{
Session[
"cod_utilizador"] = dataset1.Tables["utilizadores"].Rows[0][0].ToString();
Response.Redirect(
"Informacao.aspx");

}
else
{
//lblerro.Text = "Dados de acesso inválidos";
}

Codigo no master
if (Session["id_utilizador"] == null)
{
for (int i = 1; i < 7; i++)
Menu1.Items[0].ChildItems.RemoveAt(1);
}
else
{
Menu1.Visible =
true;
Menu1.Items[0].ChildItems.RemoveAt(0);
}

Este codigo funciona mas agora necessitava de criar ter perfis e atribuir permissoes como Faxo?
cump
 
Para faxer lougout
protectedvoid LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
{
Session.Abandon();
FormsAuthentication.SignOut();
Response.Redirect(
"Main.aspx");
}

Alem das permissoes e perfis, como faxo para estabelecer um tempo ate faxer lougout e obrigar a faxer novamente login????
 
Alem das permissoes e perfis, como faxo para estabelecer um tempo ate faxer lougout e obrigar a faxer novamente login????

No ficheiro web.config do teu projecto, certamente configuraste a secção de autenticação, nesse caso definindo o modo como "Forms". Aí, tens um propriedade "timeout" que é o que tu pretendes.


Algo como isto:

Código:
<system.web>
    <authentication mode="Forms">
      <forms name="ASPXFORMSAUTH" 
             loginUrl="login.aspx" 
             protection="All" 
             [B][COLOR=Lime]timeout="30"[/COLOR][/B] 
             path="/"/> 
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>

A propriedade timeout é em minutos.
 
Sugestão:
Não uses o Like usa o '=' assim evitas SQLinjection, por exemplo se meteres % em cada caixa de texto(utilizador e pass) ele vai abrir a sessão para o primeiro utilizador que encontrar... axo eu, mas tenta e ve...
 
'like' e '=' não fazem a mesma coisa. O 'like' serve para fazer um 'match' com um padrão e o '=' iguala o valor exacto.
Não o usar o 'like' não resolve o problema de sqlinjection. Faz-se tão facilmente sqlinjection com 'like' como com '='. A melhor maneira de resolveres o problema de sqlinjection em .net é usares parametros, a menos que faças tu próprio um mecanismo para filtrar os valores que concatenas com o sql.
Mas para alem do problema de sqlinjection que o ButterflyEffect tem no código:
Código:
...
"SELECT cod_utilizador FROM utilizadores WHERE login LIKE '" + login.SelectedItem + "' AND password LIKE '" + password.Text + "'"
...
ainda há o problema de que tentar validar um login com 'like' desta forma é muito fácil de aldrabar. Basta passar '%' no login e na password para que esse sql faça sempre um match e assim retornar todas as linhas que encontrar na tabela utilizadores.


Quanto a autenticação, podes começar por lêr isto:
.net 1.0/1.1
http://support.microsoft.com/kb/301240
.net 2.0
http://aspalliance.com/1619_Role_Based_Forms_Authentication_in_ASPNET_20
http://msdn2.microsoft.com/en-us/library/aa480476.aspx
 
Última edição:
Back
Topo