Authenticação/Limite de usuarios

1. Authenticação/Limite de usuarios

cléo
sayde

(usa Outra)

Enviado em 07/05/2016 - 20:01h

Boa noite gostaria de ajuda com meu script minha intenção e essa o cliente tem outro script que envia 2 dados no caso o ip e usuario, queria ler o ip e delimitar 5 usuários nesse determinado ip se fosse tentando logar o sexto o código avisaria e retornaria.

Tentativas até agora

	my	%data = ($args->{args}{'IP'} => $args->{username}); #Recebe o ip e o username
my @IP = keys %data;
my @Users = values %data;
my $size = @Users;

foreach my $IP (@IP) {
if ($IP && $size > 5) { #Aqui seria a verificação se estivessem mais de 5 usuários no ip falharia a autenticação

print "Limite máximo de conexão atingido\n";

return $args->{auth_failed};

}
}



  


2. Re: Authenticação/Limite de usuarios

Daniel Vinciguerra
dvinciguerra

(usa Debian)

Enviado em 08/05/2016 - 10:45h

Ola,

Não sei como esta a coisa ou como você esta fazendo isso... é uma aplicação web? uma API?

Do mais, para resolver isso você pode usar um storage (banco NoSQL tipo Redis, por exemplo), armazena as informações de ip + username lá e pegue quando um novo ip + username for enviado para validar a sua regra.

Isso deve resolver a principio!

Abs


3. Re: Authenticação/Limite de usuarios

cléo
sayde

(usa Outra)

Enviado em 08/05/2016 - 10:59h

e pra uma api não teria alguma forma de não precisar um banco de dados só armazenar em uma variável?


4. Re: Authenticação/Limite de usuarios

Daniel Vinciguerra
dvinciguerra

(usa Debian)

Enviado em 08/05/2016 - 14:12h

Tudo depende de quão confiável você quer que sua solução seja...

Você sempre pode fazer uma solução em pure-perl mas acho que você não deveria pois teria que pensar em disponibilidade, escalabilidade, confiabilidade, etc...

Como disse não sei qual a sua necessidade real mas você vai precisar de algum lugar para guardar essas informações, controlar timeout dos logins, talvez o que você queira fazer não seja tão simples assim infelizmente, principalmente em se tratando de uma API.

Abs