首頁 >後端開發 >php教程 >在Symfony 3中使用Guard驗證更輕鬆的身份驗證3

在Symfony 3中使用Guard驗證更輕鬆的身份驗證3

Christopher Nolan
Christopher Nolan原創
2025-02-16 11:27:091032瀏覽

> SYMFONY'S GUARD組件:簡化自定義身份驗證

Symfony 2.8和3引入了守衛組件,大大簡化了自定義身份驗證的創建。 Guard與Symfony的安全系統無縫集成,提供了管理整個身份驗證鏈的統一接口。這允許對身份驗證過程進行廣泛的自定義,包括提交表單,憑證驗證以及處理成功和失敗的身份驗證嘗試。 它的適應性擴展到各種身份驗證類型,包括表格,基於令牌,社交媒體和API身份驗證,並支持“記住我”功能和基於角色的訪問控制。 重要的是,後衛增強而不是替代現有的符號安全機制;諸如

之類的方法保持功能。 form_login>

Easier Authentication with Guard in Symfony 3

本文演示了一個基本形式的身份驗證,需要訪問。儘管傳統形式的身份驗證仍然可行,但強調了警衛的簡化方法。 相同的原理適用於其他身份驗證方法。 可以通過[this Repository](link_to_to_repository_here-替換為實際鏈接)的示例Symfony應用程序使用守衛身份驗證。

安全配置ROLE_ADMIN

>功能安全配置需要用戶類(代表用戶數據)和用戶提供者(檢索用戶數據)。 為簡單起見,我們將使用Symfony的默認用戶類使用Inmemory用戶提供商。

文件開始如下:

security.yml(有關

>文件的全面詳細信息,請參閱Symfony網站。)
<code class="language-yaml">security:
    providers:
        in_memory:
            memory:
                users:
                    admin:
                        password: admin
                        roles: 'ROLE_ADMIN'</code>
>

防火牆是在security.yml鍵下定義的:>

>這允許匿名訪問並指定firewalls作為註銷路徑。

鍵指定
<code class="language-yaml">        secured_area:
            anonymous: ~
            logout:
                path:   /logout
                target: /
            guard:
                authenticators:
                    - form_authenticator</code>
(我們的服務名稱)為身份驗證者。

>訪問規則:/logout guard form_authenticator>只有未身分的用戶才能訪問

>;所有其他路徑都需要

<code class="language-yaml">    access_control:
            - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/, roles: ROLE_ADMIN }</code>
>登錄控制器

/login登錄形式和控制器在ROLE_ADMIN>中定義

此操作顯示基本的登錄表格(由樹枝模板渲染)。

後衛身份驗證器服務

DefaultController

服務在
<code class="language-php">  /**
   * @Route("/login", name="login")
   */
  public function loginAction(Request $request)
  {
    // ... (Existing code to handle user and authentication error) ...
  }</code>
>中定義:

>

類(下面詳細介紹)擴展

form_authenticator> services.yml

此類實現後衛身份驗證管道:
<code class="language-yaml">services:
    form_authenticator:
          class: AppBundle\Security\FormAuthenticator
          arguments: ["@router"]</code>
  • getCredentials():提取從郵政請求中提取憑據到/login>
  • getUser():根據用戶名檢索用戶。
  • >
  • checkCredentials():對存儲的密碼驗證密碼。
  • >
  • onAuthenticationSuccess():重定向到成功登錄時的主頁。
  • >
  • onAuthenticationFailure():重定向回到帶有錯誤消息的登錄頁面。
  • >
  • start():需要在需要身份驗證時重定向到登錄頁面。
  • >
  • supportsRememberMe():指示是否支持“記住我”功能。
  • >

結論

>這說明了使用護罩組件的功能登錄系統。 多個身份驗證者可以共存,需要入口點規範。 後衛補充,而不是替代,現有的Symfony安全功能。

常見問題(常見問題解答)

提供的常見問題解答部分提供了對後衛身份驗證各個方面的詳細說明,包括其與其他方法的差異,自定義選項,處理角色的處理,密碼編碼以及與數據庫和社交認證的使用。 這些答案是全面的,並解決了共同的問題。

>

以上是在Symfony 3中使用Guard驗證更輕鬆的身份驗證3的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn