Your SlideShare is downloading. ×
ZF Básico - 6. Autenticação
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ZF Básico - 6. Autenticação

3,084
views

Published on

Mini-curso sobre Zend Framework - Parte 6

Mini-curso sobre Zend Framework - Parte 6

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,084
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
182
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Zend Framework Parte VI: Autenticação de Usuário
  • 2. Autenticação
    • É o processo de ‘logar’ alguém em uma aplicação web.
    • Modificaremos nossa aplicação para exigir o login do usuário antes de dar acesso à qualquer parte da aplicação.
    • Passos necessários:
      • Criar tabela de usuários e povoar pelo menos um usuário;
      • Criar um formulário de login (classe);
      • Criar um Controller contendo as Actions para login e logout;
      • Certificar-se de que o usuário está logado antes de deixar que ele acesse a aplicação.
  • 3. A Tabela de Usuários
    • Execute os seguintes códigos SQL:
    • CREATE TABLE users (
    • id int(11) NOT NULL auto_increment,
    • username varchar(50) NOT NULL,
    • password varchar(50) NOT NULL,
    • realName varchar(100) NOT NULL,
    • PRIMARY KEY (id),
    • UNIQUE KEY username (username)
    • );
    • INSERT INTO users
    • VALUES
    • (null, ‘seuLogin', ‘suaSenha', ‘seuNomeReal');
  • 4. Mudanças no Bootstrap
    • Certifique-se de que seu bootstrap contenha:
    • /**
    • * Setup database
    • *
    • */
    • $db = Zend_Db::factory($config->db);
    • Zend_Db_Table::setDefaultAdapter($db);
    • /**
    • * Persiste o objeto db para uso em toda a
    • * aplicação
    • */
    • $registry->set('db', $db);
  • 5. O Controller de Autenticação
    • ./application/controllers/AuthController.php
    • class AuthController extends Zend_Controller_Action {
    • function init() {
    • $this->initView();
    • $this->view->baseUrl = $this->_request->getBaseUrl();
    • }
    • function indexAction() {
    • $this->_redirect('/');
    • }
    • }
  • 6. O Formulário de Login
    • ./application/models/LoginForm.php
    • class LoginForm extends Zend_Form {
    • public function __construct($options = null) {
    • parent::__construct($options);
    • $this->setName('login');
  • 7. O Formulário de Login
    • ...continuação
    • $username = new Zend_Form_Element_Text('username');
    • $username->setLabel('Usuário')
    • ->setRequired(true)
    • ->addFilter('StripTags')
    • ->addFilter('StringTrim')
    • ->addValidator('NotEmpty');
  • 8. O Formulário de Login
    • ...continuação
    • $password = new Zend_Form_Element_Password('password');
    • $password->setLabel('Senha')
    • ->setRequired(true)
    • ->addFilter('StripTags')
    • ->addFilter('StringTrim')
    • ->addValidator('NotEmpty');
  • 9. O Formulário de Login
    • ...continuação
    • $submit = new Zend_Form_Element_Submit('submit');
    • $this->addElements(array($username, $password, $submit));
    • }
    • }
  • 10. A visão do Login
    • ./application/views/scripts/auth/login.phtml
    • <?php if(!empty($this->message)) :?>
    • <div id=&quot;message&quot;>
    • <?php echo $this->escape($this->message);?>
    • </div>
    • <?php endif;
    • echo $this->form;
    • ?>
  • 11. O loginAction
    • Edite o seu AuthController.php:
    • function loginAction() {
    • $form = new LoginForm();
    • $form->submit->setLabel('Login');
    • $form->setAction($this->view->baseUrl . '/auth/login')
    • ->setMethod('post');
    • $this->view->form = $form;
    • $this->view->message = '';
  • 12. O loginAction
    • ...continuação
    • if ($this->_request->isPost()) {
    • $formData = $this->_request->getPost();
    • if ($form->isValid($formData)) {
    • $username = $form->getValue('username');
    • $password = $form->getValue('password');
  • 13. O loginAction
    • ...continuação
    • $db = Zend_Registry::get('db');
    • $authAdapter = new Zend_Auth_Adapter_DbTable($db);
    • $authAdapter->setTableName('users');
    • $authAdapter->setIdentityColumn('username');
    • $authAdapter->setCredentialColumn('password');
  • 14. O loginAction
    • ...continuação
    • $authAdapter->setIdentity($username);
    • $authAdapter->setCredential($password);
    • $auth = Zend_Auth::getInstance();
    • $result = $auth->authenticate($authAdapter);
  • 15. O loginAction
    • ...continuação
    • if ($result->isValid()) {
    • $data = $authAdapter->getResultRowObject(null, 'password');
    • $auth->getStorage()->write($data);
    • $this->_redirect('/index/list/');
    • } else {
    • $this->view->message = 'Falha na autenticação.';
    • }
  • 16. O loginAction
    • ...continuação
    • } else {
    • $this->view->message = 'Dados de autenticação incorretos.';
    • }
    • }
    • $this->view->title = &quot;Login&quot;;
    • }
  • 17. O logoutAction
    • Edite seu AuthController.php:
    • function logoutAction() {
    • Zend_Auth::getInstance()->clearIdentity();
    • $this->_redirect('/auth/login/');
    • }
  • 18. Alterando o IndexController
    • Incluir:
    • function init() {
    • $this->initView();
    • $this->view->baseUrl = $this->_request->getBaseUrl();
    • $this->view->user = Zend_Auth::getInstance()->getIdentity();
    • }
  • 19. Alterando o IndexController
    • Incluir:
    • function indexAction() {}
    • function listAction() {
    • $this->view->title = &quot;Meus Álbuns&quot;;
    • $albums = new Albums();
    • $this->view->albums = $albums->fetchAll();
    • }
  • 20. Criando a visão da listAction
    • Renomeie o script de visão index.phtml para list.phtml.
  • 21. Alterando o Layout padrão
    • Edite o seu layout.phtml:
    • <body>
    • <div id=&quot;login&quot;>
    • <?php if ($this->user) : ?>
    • <p id= &quot;loggedin&quot;> Usuário:
    • <?php echo $this->escape($this->user->realName); ?>. [
    • <a href= &quot;<?php echo $this->baseUrl ?>/auth/logout&quot;>Sair</a> ]
    • </p>
    • <?php endif; ?>
    • </div>
    • <div id=&quot;content&quot;>
    • <h1><?php echo $this->escape($this->title); ?></h1>
    • <?php echo $this->layout()->content; ?>
    • </div>
    • </body>
  • 22. Protegendo os Actions
    • Adicione ao seu IndexController.php:
    • function preDispatch() {
    • $auth = Zend_Auth::getInstance();
    • if (!$auth->hasIdentity()) {
    • $this->_redirect('/auth/login/');
    • }
    • }
  • 23. Do it!
    • Escreva o código e rode a aplicação.

×