3

symfony sfDoctrineGuardPlugin을 사용하여 프론트 엔드 사용자와 백엔드 사용자의 인증을 관리합니다. 프론트 엔드 사용자가 백엔드 앱에 로그인하지 못하게하는 것을 제외하고는 괜찮습니다. 자격 증명을 설정할 수 있지만 사용자가 인증 된 후에 자격 증명이 확인됩니다. 내가 원하는 것은 백엔드 그룹이 아닌 사용자를 위해 결코 검증하지 않기 위해 sigin을 폼에 포함시키는 것이다. 어떻게해야합니까?symfony sfDoctrineGuardPlugin 커스텀 로그인 질의

답변

2

나는 더 나은 해결책을 찾았다 고 생각합니다. sfDoctrineGuard plugin에는 사용자 검색을 위해 선택적으로 호출 할 수 있는지 검사하는 자체 유효성 검사기가 있습니다.

//app.yml 
all: 
    sf_guard_plugin: 
    retrieve_by_username_callable: sfGuardUser::getForBackend 

//sfGuardUser.class.php 

    public static function getForBackend($username) 
    { 
    $query = Doctrine::getTable('sfGuardUser')->createQuery('u') 
     ->leftJoin('u.Groups g') 
     ->leftJoin('g.Permissions p') 
     ->where('u.username = ? OR u.email_address = ?', array($username, $username)) 
     ->addWhere('u.is_active = ?', true) 
     ->addWhere('p.name = ?', 'backend'); 

    return $query->fetchOne(); 
    } 
+0

@Dziamid, 나는 똑같이하려고 노력하고있다. 그러나이 함수를 어디에 넣어야합니까 ?? –

0

하나의 아이디어가 있습니다. 로그인 양식에 대한 사용자 정의 유효성 검사기를 만들 수 있습니다. 여기에 구글 결과는 다음과 같습니다이 발리에서

http://www.symfony-project.org/blog/2008/09/05/call-the-expert-how-to-implement-a-conditional-validator

, 당신은 사용자가 해당 그룹에 속하는지 여부를 확인하고 그에 따라 오류가 발생 할 수 있습니다. 사용자가 인증을받지 못합니다.

0

내가 방금 추가 할 수 있다고 생각 :

storage: 
    class: sfSessionStorage 
    param: 
     session_name: sf_backend 

기본, 심포니 공유 세션 쿠키하여 backend/config/factories.yml 의 끝에서,이 솔루션으로, 심포니이 쿠키를 구분합니다.

관련 문제