2010-11-21 3 views
0

심포니가 생성 한 CRUD 함수가 있습니다. 기사 클래스와 기사 소유자가 있습니다. 나는 현재 기사의 소유자보다 다른 사용자를 방지하고 싶습니다. 사용자 정의 필터 나 유효성 검사기에 대해 생각하고 있었지만 유효성 검사기를 구현할 때 일부 사용자가 편집 양식을 입력 할 수있었습니다 (그들은 보낼 수 없었습니다). 그러나 사용자 필터를 구현할 때 일부 동작 (이 경우 편집) 전에 필터를 실행하는 것이 문제가됩니다.symfony CRUD 동작에 대한 액세스 제한

어떻게해야합니까?

답변

0

내 생각에는 이것이 내장되어 있다고 생각합니다. security.yml 파일을 읽어야합니다.

업데이트 : 알겠습니다 ... 분명 보안 시스템 calls the method hasCredential() of the user object입니다. 아마도 사용자 정의 사용자 클래스에서이 메서드를 확장하여 해당 매개 변수가 'article_owner'일 때 특별한 검사를 수행 할 수 있습니다. 이 번

당신이해야 할 것이다 모두가 당신은 내가 심포니가 상자 밖으로 개체 수준의 액세스 제어를 지원합니다 생각하지 않습니다

+0

나는 그것이 무엇인지 압니다. 하지만 예를 들어 만들어야합니다. "all : credentials : owner_article_5"모든 기사 ... Ant 각 사용자에게 자격 증명을 지정하는 방법을 알지 못합니다. – user364622

+0

@ user364622 : 내 업데이트를 참조하십시오. – greg0ire

+0

Nice :] 알레시는 저의 액션 클래스에서 "isOwner"메서드를 작성했습니다. 그러나 당신이 제안하는 해결책 마녀는 좋고 똑똑하다. 나는 사용자 클래스의 과부하가 그 문제에 대한 좋은 것이라고 생각한다. – user364622

0

원하는 행동이 자격 증명을 지정하고, 수행된다. 내 응용 프로그램 중 하나에서 특정 문제가 있었고 로그인 한 사용자가 편집 작업에서 소유자와 일치하는지 여부를 명시 적으로 확인했습니다. 이것은 내가 그것을 위해 사용한 기능입니다 :

protected function hasObjectAccess($obj) { 
    if ($this->getUser()->hasGroup('admin') 
     || $obj->getOwnerId() == $this->getUser()->getId()))) { 
     return true; 
    } 
    return false; 
}