Diferenciar maiúsculas no login e na senha
25/10/2013
0
OleDbCommand comando = new OleDbCommand("SELECT * FROM Funcionario Where Login = '@Login' And Senha = '@Senha' COLLATE Latin1_General_CS_AS", conexao);
OleDbCommand comando = new OleDbCommand("SELECT * FROM Funcionario Where Login COLLATE Latin1_General_CS_AS = '" + @Login.Trim() +"' And Senha COLLATE Latin1_General_CS_AS = '" + @Senha.Trim() + "', conexao);
Jair Souza
Posts
12/11/2013
Joel Rodrigues
12/11/2013
[desativado] Gonçalves
12/11/2013
Jair Souza
12/11/2013
Joel Rodrigues
12/11/2013
Jair Souza
Partindo do que já tenho nesta linha :
OleDbCommand comando = new OleDbCommand("SELECT * FROM Funcionario F " + "INNER JOIN Perfil AS P ON F.Perfil = P.IDPerfil Where [F.Login] = @Login and [F.Senha] = @Senha and F.Situacao = true", conexao);
12/11/2013
[desativado] Gonçalves
não entendi.
Você deve ter uma tabela de "Funcionario" associada a uma de "Perfil". Este "Perfil" tem um usuário eu uma senha.
Username deve ser chave ou parte dela.
A senha é a senha. Unica e intransferível associada aquele usuário.
Para logar, usuario digitado deve ser igual ao usuário no banco, senha digitada deve ser igual a senha no banco e mais quaisquer outras regras que você decidir.
O que mais falta?
12/11/2013
Jair Souza
Me parece que essa senha não é tão senha assim, não é ?
...mas é mais por capricho, que gostaria de que ficasse no rigor da comparação do que foi digitado com o que está banco.
Tipo é no Windows.
12/11/2013
[desativado] Gonçalves
Veja, se o usuário for parte da chave da tabela, não vão existir dois JOAO. Isto permite que mesmo que exista a senha TESTE para o JOAO e o RONALDO, não vai importar. Um não vai saber da existência do outro.
Não sei se acabei confundindo mais do que explicando ...
13/11/2013
Jair Souza
Como eu faria o HASH ?
Tenho uma tabela Funcionario com os campos :
IDFuncionario - numeração automatica - chave primaria
Nome
Login
Senha
Perfil
Situacao
E uma tabela Perfil :
IDPerfil - Numeração automatica = chave primária
Nome
Descricao
13/11/2013
[desativado] Gonçalves
IDFuncionario - numeração automatica - chave primaria
Nome
Login - chave primaria
Senha
Perfil
Situacao
O resto fica como está.
Para gerar o HASH em JAVA você pode usar o seguinte:
import java.security.MessageDigest; public class teste { public static String ComputeHash(String senha) { try { MessageDigest mecanismoDeHash = MessageDigest.getInstance("SHA-256"); byte[] hashEmBytes = mecanismoDeHash.digest(senha.getBytes("UTF-8")); StringBuffer hashEmHexadecimal = new StringBuffer(); for (int i = 0; i < hashEmBytes.length; i++) { String hex = Integer.toHexString(0xff & hashEmBytes[i]); if (hex.length() == 1) { hashEmHexadecimal.append('0'); } hashEmHexadecimal.append(hex); } return hashEmHexadecimal.toString(); } catch (Exception ex) { throw new RuntimeException(ex); } } }
Esse método deve ser usado quando você recebe a senha do usuário e vai gravar ela no banco quando faz o cadastro do usuário e quando recebe a senha no login para comparar com o que foi salvo no banco.
13/11/2013
[desativado] Gonçalves
using System; using System.Security.Cryptography; using System.Text; public class teste { static string ComputeHash(string senha) { SHA256Managed mecanismoDeHash = new SHA256Managed(); string hashEmHexadecimal = String.Empty; byte[] bytesHash = mecanismoDeHash.ComputeHash(Encoding.UTF8.GetBytes(senha), 0, Encoding.UTF8.GetByteCount(senha)); foreach(byte b in bytesHash) { hashEmHexadecimal += b.ToString("x2"); } return hashEmHexadecimal; } }
Clique aqui para fazer login e interagir na Comunidade :)