簡體   English   中英

使用sfDoctrineGuardPlugin分隔前端和后端用戶

[英]Separate frontend and backend users with sfDoctrineGuardPlugin

我正在開始一個項目,因為我正在使用symfony,我第一次使用symfony,實際上非常棒,我已經安裝了sfDoctrineGuardPlugin,一切都很好,直到現在,為什么?,因為前端用戶可以在后端登錄,反之亦然,我不想要那樣,所以,我開始谷歌,我發現Symfony sfDoctrineGuardPlugin自定義登錄查詢在這里,但我不知道我應該在哪里放置功能所以,我沒有測試它。

因為我不希望前端用戶可以在后端登錄,我想我可以使用憑據,可以嗎? 但是,symfony在記錄后檢查用戶憑據,我也不想要,所以,我怎么能實現這個?,也許如果我可以在會話中有名稱空間,我可以檢查后端命名空間中是否有管理員而且對於前端用戶來說,我認為他們永遠不會得到修復。

我不知道真的知道sfDoctrineGuardPlugin是否有一些可以管理這種情況的配置,存在這樣的配置?

另外,在我的后端,我希望有一個頁面來管理前端用戶,而其他用戶則需要后端用戶,因為前端用戶會有個人資料和地址,認為這樣更容易,但我不知道從哪里開始。

需要一些幫助

謝謝

經過幾天的編碼,我能夠完全按照自己的意願去做,我將分享我的解決方案:
我從一個在SO中找到的例子開始,你可以在這里閱讀帖子:
Symfony sfDoctrineGuardPlugin自定義登錄查詢它給了我一個想法,我執行了它,所以,我創建\\ lib \\ Util.class.php,帶有函數,一個用於查詢后端用戶,另一個用於前端用戶

static public function retrieveCustomer($username, $isActive = true)
{
    $query = Doctrine_Core::getTable('sfGuardUser')->createQuery('u')
    ->leftJoin('u.Groups g')
    ->leftJoin('g.Permissions p')
    ->where('u.username = ?', $username)
    ->addWhere('u.is_active = ?', $isActive)
    ->addWhere('g.name = ?', 'customers');

    return $query->fetchOne();
}

static public function retrieveAdmin($username, $isActive = true)
{
    $query = Doctrine_Core::getTable('sfGuardUser')->createQuery('u')
    ->leftJoin('u.Groups g')
    ->leftJoin('g.Permissions p')
    ->where('u.username = ?', $username)
    ->addWhere('u.is_active = ?', $isActive)
    ->whereIn('g.name', array('administrators','operators'));

    return $query->fetchOne();
}  

現在,在每個應用程序的app.yml中,我覆蓋插件的默認查詢

#Example for apps/backend/config/app.yml
all:
    sf_guard_plugin:
        retrieve_by_username_callable: Util::retrieveAdmin

直到現在一切都很好,但我開始面臨另一個問題,所以我打開一個新線程: 在symfony中覆蓋isAuthenticated(),我得到了我的解決方案的最后一步,即為每個應用設置不同的會話名稱,所以,在每個應用程序的factories.yml中:

#apps\backend\config\factories.yml
storage:
  class: sfSessionStorage
  param:
    session_name: backend

現在一切都已設置,前端用戶無法登錄后端應用程序,反之亦然。

隨意評論

最常見的方法是通過憑證,我的backend應用程序security.yml看起來像:

all:
  is_secure: on
  credentials: [login_backend]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM