• Categorias
  • Recente
  • Tags
  • Popular
Collapse

Cadastrar e autenticar usuário através de um mesmo fluxo.

Agendado Fixado Trancado Movido Fluxos
2 Posts 2 Posters 502 Visualizações
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados
Responder
  • Responder como tópico
Entre para responder
Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
  • R Offline
    R Offline
    Ruanrs
    wrote on última edição por
    #1

    Estamos trabalhando em um fluxo para fazer a autenticação do usuário. A lógica do fluxo segue a orientação que nos foi sugerida pelo pessoal da softwell.
    Passo 1 - Realiza a requisição POST para o webservice de login
    Passo 2 - Verifica se o retorno da chave "LoggedIn" é true.
    Passo 3 - Caso o retorno da chave LoggedIn seja false, monte a mensagem de erro, caso seja true prossiga com o o login
    Passo 4 - Verifica se o usuário já existe no banco de dados DO MAKER. (É importante ter o usuário cadastrado no Maker para que seja possível usar a função Autenticar Usuário).
    Passo 4a (Usuário já existe) - Veja Passo 5
    Passo 4b (Usuário não existe) - Nesse caso nós pegamos as informações do usuário (Login, nome...) e registramos o usuário na tabela fr_usuario do maker.
    Passo 5 - Concatenar o código do usuário (usr_codigo na fr_usuario) com a senha fornecida em tela, e gerar um hash MD5 para comparar com o que está salvo no maker. A função autenticar Usuário sempre vai fazer essa concatenação e hash da senha, por isso precisamos ter esse hash para verificar.
    Passo 6 - Verifica se o Hash gerado é o mesmo salvo no banco de dados para o usuário. Caso não seja (ou, no caso do usuário novo, caso o campo senha esteja nulo), Insere a nova senha na fr_usuário.
    Passo 7 - Autentica o usuário através da função nativa do maker, Autenticar Usuário. Isso é feito para que o usuário tenha acesso de forma segura as telas internas do aplicativo.

    Problemas encontrados: O principal problema encontrado até o momento, é que quando nós tentamos realizar a operação de cadastro de usuário (inserindo as informações na fr_usuario) no mesmo fluxo que realiza a autenticação, a autenticação falha, retorna mensagem de usuário/senha inválidos, e dá rollback nas atualizações do banco de dados, fazendo com que o usuário não seja salvo. É interessante apontar que, o EXATO mesmo fluxo, apenas retirando a função "Auntenticar Usuário" do final, consegue cadastrar o usuário no banco de dados. Da mesma forma, caso o usuário já esteja cadastrado previamente, a função "Autenticar Usuário" funciona perfeitamente. Já tentamos dividir em subfluxos, tanto isolando somente a parte da autenticação, e chamando ao final do fluxo que consome o webservice e faz o cadastro, e também isolar todo o resto do fluxo e chamar como um subfluxo antes da função de autenticação, e ambas as formas apresentam o mesmo problema. Parece que o banco de dados só é atualizado com o cadastro novo no momento em que o fluxo que faz a transação acaba (com sucesso, já que se o fluxo retorna uma mensagem de erro em qualquer momento ele aparenta dar rollback em qualquer mudança). Por conta disso, a função "Autenticar Usuário" não encontra o registro recém criado, resultando na falha de autenticação. Precisamos saber por quê isso acontece, e como resolvemos, para que o usuário, independente de ser o primeiro acesso ou não, consiga ser autenticado com apenas um click.

    andersonlealA 1 Resposta Última resposta
    0
  • andersonlealA Offline
    andersonlealA Offline
    andersonleal
    replied to Ruanrs on última edição por andersonleal
    #2

    Controle a transação de inserção na fr_usurio com as funções "transação - abrir" e "transação - commit". Entre elas vai estar o seu processmento de inserção do usuário. Dessa forma vc irá garantir que a transação de inserção terá sido concluída, mesmo antes do fluxo terminar (Que é o padrão do maker e é o motivo pelo qual vc ainda não consegue autenticar quando está no mesmo fluxo).

    1 Resposta Última resposta
    3

  • Login

  • Não tem uma conta? Cadastrar

  • Login or register to search.
  • Primeiro post
    Último post
0
  • Categorias
  • Recente
  • Tags
  • Popular
  • Login

  • Não tem uma conta? Cadastrar

  • Login or register to search.