sábado, 21 de maio de 2011

Usando o passwd para autenticar seus programas

Olá pessoal,

Muitas vezes nossas aplicações necessitam fazer autenticação de usuários, e ao invés de criarmos nossa base, dependendo da necessidade, podemos utilizar a base de usuários do sistema, é o que vamos fazer!!!


Dados do sistema:
FreeBSD 8.2 RELEASED

Como compilar o código abaixo:

gcc -lcrypt verificaSenha.c -o TesteDeLogin



#include <unistd.h>
#include <stdio.h>
#include <pwd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <errno.h>
void LeUserSenha(char * user, char * senha)
{
        
        printf("\nUsuario:");
        scanf("%s",user);
        strncpy(senha,getpass("\nSenha:"),49);
        
}

int auten(char * user, char * senha)
{
        struct passwd * pw;
        pw = getpwnam(user);
        if(pw == NULL)
        {
                return 0; //não encontrou usuario
        }
        else
        {
                if(strcmp(crypt(senha,pw->pw_passwd),pw->pw_passwd)==0)
                        return 1; //encontrou usuario
                else
                        return -1; //a senha não confere
        }
}
//programa de teste
int main()
{
        char  senha[50];
        char  usuario[50];
        int resultAut;


        LeUserSenha(usuario, senha);
        resultAut =auten(usuario,senha);
        if(resultAut==1)
                printf("\n\tPermitido acesso: %d\n",resultAut);
        else
                printf("\n\tAcesso Negado:%d\n",resultAut); 
        return 1; 

}

É isso pessoal

Nenhum comentário:

Postar um comentário