Solucionado (ver solução)
Solucionado
(ver solução)
12
respostas

Protegendo rotas com autorização

index.php

<?php if($this->session->flashdata("success"))  : ?>
    <p class="alert alert-success"><?= $this->session->flashdata("success") ?></p>
<?php endif?>

<?php if($this->session->flashdata("danger"))  : ?>
    <p class="alert alert-danger"><?= $this->session->flashdata("danger") ?></p>
<?php endif?>

auth_helper.php

function autoriza() {
    $ci = get_instance();
    $usuarioLogado = $ci->session->userdata("usuario_logado");
    if(!$usuarioLogado) {
        $ci->session->set_flashdata("danger", "Você precisa estar logado");
        redirect("/");
    }
    return $usuarioLogado;
}

Minha autenticação funciona perfeitamente redirecionando para a tela inicial porém a mensagem não aparece. Não faço ideia do que possa está acontecendo.

12 respostas

Bom dia Luiz, ao invés de redirecionar, fique na mesma página e verifique se o código está funcionando (Comente a linha do redirect). Depois teste com o redirect para uma URI um pouco diferente. Dessa maneira você conseguirá isolar o possível erro. Não estou vendo erro aqui neste código, mas fazendo esses testes deve isolá-lo

Att

Olá Guilherme,

tentei isolar de todas as formas possíveis HAHAHAHAHA. Nada de mensagem :/

Posso sugerir usar {} ao invés de if : endif?

Abraço

Claro, toda sugestão é válida hahahaha. Já darei uma resposta.

Nada feito! Não funciona mesmo :/

Deve ser algo muito simples que estmaos deixando passar ao procurar algo complexo. Sem nenhum if para esses dois casos, tenta fazer:

    p1: <p class="alert alert-danger"><?= $this->session->flashdata("danger") ?></p>
    p2: <p class="alert alert-danger"><?= $this->session ?></p>

Veja o html que saiu? Cola ele aqui? Cola o html que saiu dos ifs também, vamos ver se esses ps estão saindo...

HTML gerado ao logar com usuário ou senha inválidos, utilizando o if

<html lang="en">

    <head></head>
    <body>
        <div class="container">
            <h1></h1>
            <table class="table"></table>
            <h1></h1>
            <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/login/autenticar"></form>
            <h1></h1>
            <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/usuarios/novo"></form>
        </div>
    </body>

</html>

HTML gerado com o código acima sem if

Ao atualizar a página:



    <html lang="en">
        <head></head>
        <body>
            <div class="container">



                         p1: 

                <p class="alert alert-danger"></p>


                    p2: 

                <p class="alert alert-danger"></p>
                <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"></div>
                <p></p>
                <h1></h1>
                <table class="table"></table>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/login/autenticar"></form>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/usuarios/novo"></form>
            </div>
        </body>
    </html>

Após efetuar login com usuário ou senhas inválidas.



    <html lang="en">
        <head></head>
        <body>
            <div class="container">



                         p1: 

                <p class="alert alert-danger"></p>


                    p2: 

                <p class="alert alert-danger"></p>
                <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"></div>
                <p>
                </p>
                <h1></h1>
                <table class="table"></table>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/login/autenticar"></form>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/usuarios/novo"></form>
            </div>
        </body>
    </html>

Mesmo com os

s sendo mostrados sem if, a mensagem se "usuário ou senha inválidos" não aparece. Será que o problema não está a nível de session? Abraço.

Que pena que a discussão parou por aí.

Pois, meses depois, estou com o mesmo problema.

Resolveram ?.

Se puderem, me avisem, ok?

Bom dia Sidnei,

Poderia me passar um link para o zip com seu projeto para ver o que pode estar acontecendo de errado?

Att

Bom dia, Victor. Legal ter alguém como você por aqui, sempre disposto a ajudar (tenho visto sua participação nas discussões.

Felizmente, não vai ser preciso, pois eu resolvi o problema. Vou postar abaixo como fiz.

solução!

Consegui resolver, simples, mas inimaginável para mim!

Eu estranhei que quando eu tinha o código dentro do controller (produto/Formulario), funcionava corretamente. Quando eu usava a função do auth_helper não funcionava.

O que eu tinha de diferente neles?

o charset!!!!!!

Troquei o charset para utf-8 e , pronto, tá beleza.

Luiz e Guilherme, se puderem testar no caso que estavam discutindo, por favor testem.

Bom no meu caso deu certo.

Obrigado Victor por querer se envolver neste problema :)

Oi Sidnei, tudo bem?

Desculpe, estava testando com o usuário do Victor (também aqui do Alura) uma tela e acabei me mantendo logado no usuário dele quando enviei a resposta ontem :) Já troquei a autoria da mensagem de volta.

Ótima solução. Vou conferir e colocar na documentação do exercício também em breve.

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software