Opa, muito bem explicado Rafael, é exatamente assim que eu fiz também. :)

Só uma dica: a "$pagina_atual   = base_url() . $this->uri->uri_string();"
pode usar diretamente a função "uri_string()"!

Gostei do jeito que vc verifica o loop infinito; eu fiz assim:
http://pastebin.com/nxziwS0u

Em 28 de fevereiro de 2012 16:15, Rafael V. de Oliveira <
[email protected]> escreveu:

> Existem diversas formas, como hooks (o teu problema é quase certo a falta
> de carregar o helper), pelo construtor da classe, etc…
>
> A solução mais elegante que encontrei foi essa:
> http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY
>
> Resumindo em miúdos, ao invés de todos os controllers herdarem o
> MY_Controller, eles podem ou herdar o Admin_controller ou Public_controller
> (ambos os nomes podem ser alterados). E estas duas classes (podem ser mais)
> herdam o MY_Controller.
>
> No Admin_controller eu coloquei assim (no constructor):
>
> //Páginas que não necessitam estar logado
> $paginas_login  = array('admin/login', 'admin/logout');
> //Dê uma olhada no user_guide
> $pagina_atual   = base_url() . $this->uri->uri_string();
>
> //Evita o loop eterno
> if ( ! in_array($pagina_atual, $paginas_login) )
> {
>        if ( ! $this->session->userdata('login_id') )
>        {
>                //Atenção ao $paginas_login
>                redirect('admin/login');
>        }
> }
>
> É por isso que quando vejo o pessoal reclamando que o CI não tem controle
> de acesso, eu dou risada. É tão simples implementar que a melhor opção é
> deixar a critério do desenvolvedor.
>
> É só prestar atenção a nome de sessions e o que está no autoload ou não.
> Como o helper url eu utilizo quase sempre, ele está no autoload.
>
> Em 28/02/2012, às 16:51, Nino Baldo escreveu:
>
> > Ola pessoal,
> >
> > Gostaria de saber como validar se o usuário está logado ou não em todas
> as
> > telas e caso não esteja direcionar para o controller de login?
> >
> > Até agora já fiz um hook de "pre_controller", mas não consigo
> redirecionar,
> > pois quando uso o "redirect('pagina')" ele me exibe esse erro: Fatal
> error:
> > Call to undefined function redirect()
> >
> >
> > Att,
> >
> > *Álvaro Vilobaldo Rios da Silva*
> >
> > mail to: [email protected] <[email protected]>
> > *Analyst Programmer*
> >
> > *São Paulo and Region, Brazil*
> > _______________________________________________
> > [email protected]
> > http://www.codeigniter.com.br
> > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
> > ---------------------------
> > Oportunidade de negócio
> > http://www.franquiasargohost.net
> > ---------------------------
>
> _______________________________________________
> [email protected]
> http://www.codeigniter.com.br
> http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
>
_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a