사용자의 역할이 변경되었는지 확인하고 싶습니다.사용자 역할이 변경되었는지 확인하는 방법은 무엇입니까?
다음보기를보십시오. 저는 관리자이며 다른 관리자 (ROLE_MEMBER_ADMIN
에서 ROLE_USER
)의 역할을 변경하려고합니다. 그러나 멤버의 역할은 그가 연결을 끊었다가 다시 연결될 때만 바뀝니다.
의 isEqualTo
방법이 해결책입니까? 어떻게 구현할 수 있습니까?
사용자의 역할이 변경되었는지 확인하고 싶습니다.사용자 역할이 변경되었는지 확인하는 방법은 무엇입니까?
다음보기를보십시오. 저는 관리자이며 다른 관리자 (ROLE_MEMBER_ADMIN
에서 ROLE_USER
)의 역할을 변경하려고합니다. 그러나 멤버의 역할은 그가 연결을 끊었다가 다시 연결될 때만 바뀝니다.
의 isEqualTo
방법이 해결책입니까? 어떻게 구현할 수 있습니까?
독자적으로 구현해야한다고 생각합니다. 이것은 사용자 로그와 비슷하게 들립니다.
사용자 ID와 관련된 모든 이벤트를 기록하는 새 테이블을 작성할 수 있습니다. 그런 다음 모든 이벤트를 기록 할 수 있습니다.
그런 다음 사용자에게 변경 사항이 있는지 확인하는 기능을 작성할 수 있습니다. 귀하의 사용자 엔티티에서
:
이use Symfony\Component\Security\Core\User\EquatableInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class User implements UserInterface, \Serializable, EquatableInterface {
/* took out getters/setters/ members declaration for clarity */
/**
* @see \Serializable::serialize()
*/
public function serialize() {
return serialize(array(
$this->id,
$this->username,
$this->email,
$this->password,
$this->isActive,
$this->roles
));
}
/**
* @see \Serializable::unserialize()
*/
public function unserialize($serialized) {
list (
$this->id,
$this->username,
$this->email,
$this->password,
$this->isActive,
$this->roles
) = unserialize($serialized);
}
public function isEqualTo(UserInterface $user) {
if (!$user instanceof User) {
return false;
}
if ($this->password !== $user->getPassword()) {
return false;
}
if ($this->username !== $user->getUsername()) {
return false;
}
if ($this->email !== $user->getEmail()) {
return false;
}
if ($this->isActive !== $user->isEnabled()) {
return false;
}
// check roles
// http://www.metod.si/symfony2-reload-user-roles/
if (md5(serialize($this->getRoles())) !== md5(serialize($user->getRoles()))) {
return false;
}
return true;
}
}
그것은 그것을해야는 PHP 5.3.27 테스트, PHP 5.4.X는 직렬화 몇 가지 문제가 있습니다.
희망이 도움이됩니다.
역할이 변경되었는지 확인하기 위해 수신기를 설정합니다. 생각해 보시겠습니까? –