Elde edilmesi gereken şey, yöneticinin relogin'i zorlamak için verilen kullanıcının oturumunu kaldırma yetkisine sahip olmaktır. Bu, örneğin kullanıcı izinleri değiştiğinde kullanışlı olabilir. Oturum ve kullanıcı birlikte nasıl bağlanılır, böylece diğer kullanıcılar bu verilere erişebilir?CakePHP3'te belirli bir kullanıcı için oturum nasıl silinir?
Veritabanı oturum deposu kullanıyorum, bu nedenle veritabanından kayıt kaldırma zorla yeniden sonuçlanacak. Ayrıca kimlik doğrulama, Auth
bileşenini temel alır.
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Auth',
'action' => 'login'
],
'loginRedirect' => "/home",
'logoutRedirect' => [
'controller' => 'Auth',
'action' => 'login'
],
'authError' => "You have no permissions to access resource ${url}. Contact system administrator.",
'storage' => 'Session',
'authenticate' => [
'Form' => [
'userModel' => 'User',
'finder' => 'user',
'fields' => ['username' => 'name', 'password' => 'password']
]
],
'authorize' => ["Controller"]
]);
Ve oturum depolamasını:
İşte benim İlgili config bazı olduğunu ben veritabanı güncelleme kodu yerleştirebilirsiniz nereye işaretlediğiniz Aşağıda
'Session' => [
'defaults' => 'database',
]
. Oturum açma işleminden sonra maalesef, oturum "kimliğini" alır ve böylece kimlik değişir. Sonuç olarak, giriş işleminde yapılan değişiklikler yeniden yönlendirme sonrasında görünmez.
Girişi eylemi: değerli görüş ve saptar için
public function login()
{
$form = new LoginForm();
if ($this->request->is('post')) {
if ($form->validate($this->request->data)) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
// here would be good place to update the database
return $this->redirect($this->Auth->redirectUrl());
} else {
$this->Flash->error("Invalid security credentials provided");
}
} else {
$this->Flash->error("Invalid login form");
}
}
$this->set('loginForm', $form);
}
auth bileşeni oturum belleğine yazıldığında oturum yenileniyor, bu yüzden "$ this-> Auth-> setUser()" işlevini çağırdıktan sonra oturum kimliğine erişilmesi gerekir. Tam olarak ne denedin? – ndm
Tam olarak bahsettiklerinizi denedim. Yukarıdaki kodda, yorumun yapıldığı yerde (setUser'den sonra) veritabanı içeriğini değiştirdim ancak bu yeniden yönlendirme veya yeni istek sonrası geçersiz kılınır – Antoniossss
Biraz daha hassas olmanız, ideal olarak kullandığınız kodu göstermeniz ve açıklamanız gerekir. tam olarak "_gets overriden_" demek, _what_ _what_ _what_ data ile geçersiz kılınmış mı? – ndm