Your SlideShare is downloading. ×
0
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
ZF Básico - 6. Autenticação
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,109

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

×