Ich verwende Ion_auth seit 3 Jahren mit Codeigniter für ein System. Plötzlich funktionieren die Sitzungen nicht so, wie sie sollten.Ion_auth - mehrere Benutzer in einer Sitzung
Wenn sich Benutzer A bei der Website anmeldet, wird die Sitzung scheinbar mit allen anderen Benutzern geteilt. Wenn Benutzer B dann zu einer der Routen navigiert, werden sie mit den Anmeldeinformationen von Benutzer A "angemeldet".
Ich habe dies mit mehreren Benutzern getestet, sobald sich ein Benutzer bei der Site anmeldet, werden alle anderen Benutzer, die die Site besuchen, automatisch mit den Anmeldeinformationen/Session dieses Benutzers angemeldet.
Wenn sich der Benutzer abmeldet und die Auth/Logout-Route aufgerufen wird, wird die Sitzung nicht zerstört und alle Benutzer bleiben für diese Sitzung angemeldet.
Die anfängliche Weiterleitung nach der Anmeldung geht nach/vehicle/index. Sobald Sie zu einer anderen Seite navigieren, die überprüft, ob der Benutzer angemeldet ist, werden Sie zur Anmeldung weitergeleitet.
Haupt-Controller-Code:
public function vehicle()
{
if (!$this->ion_auth->logged_in())
{
redirect('auth/login');
}
else {
if (!$this->ion_auth->is_admin()) {
/**
*
* User IS NOT admin
*
**/
// Get User_id if standard user
$user = $this->ion_auth->user()->row();
// Build Crud
-Controller Auth.php
public function logout()
{
$this->data['title'] = "Logout";
// log the user out
$logout = $this->ion_auth->logout();
// redirect them to the login page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('auth/login', 'refresh');
}
Server PHP Version 5.6.30 - Bauen seit Feb 3 2017 07:51:58
Codeigniter Version 2.2 .1 - Version nicht geändert
Ion_Auth Konfig:
$config['hash_method'] = 'bcrypt'; // sha1 or bcrypt, bcrypt is
STRONGLY recommended
$config['default_rounds'] = 8; // This does not apply if random_rounds is set to true
$config['random_rounds'] = FALSE;
$config['min_rounds'] = 5;
$config['max_rounds'] = 9;
$config['salt_prefix'] = version_compare(PHP_VERSION, '5.3.7', '<') ? '$2a$' : '$2y$';
/*
| -------------------------------------------------------------------------
| Authentication options.
| -------------------------------------------------------------------------
| maximum_login_attempts: This maximum is not enforced by the library, but is
| used by $this->ion_auth->is_max_login_attempts_exceeded().
| The controller should check this function and act
| appropriately. If this variable set to 0, there is no maximum.
*/
$config['site_title'] = "Cars in the park"; // Site Title, example.com
$config['admin_email'] = "[email protected]"; // Admin Email, [email protected]
$config['default_group'] = 'members'; // Default group, use name
$config['admin_group'] = 'admin'; // Default administrators group, use name
$config['identity'] = 'email'; // A database column which is used to login with
$config['min_password_length'] = 8; // Minimum Required Length of Password
$config['max_password_length'] = 20; // Maximum Allowed Length of Password
$config['email_activation'] = TRUE; // Email Activation for registration
$config['manual_activation'] = TRUE; // Manual Activation for registration
$config['remember_users'] = FALSE; // Allow users to be remembered and enable auto-login
$config['user_expire'] = 30; // How long to remember the user (seconds). Set to zero for no expiration
$config['user_extend_on_login'] = FALSE; // Extend the users cookies every time they auto-login
$config['track_login_attempts'] = TRUE; // Track the number of failed login attempts for each user or ip.
$config['track_login_ip_address'] = TRUE; // Track login attempts by IP Address, if FALSE will track based on identity. (Default: TRUE)
$config['maximum_login_attempts'] = 3; // The maximum number of failed login attempts.
$config['lockout_time'] = 600; // The number of seconds to lockout an account due to exceeded attempts
$config['forgot_password_expiration'] = 0; // The number of milliseconds after which a forgot password request will expire. If set to 0, forgot password requests will not expire.
Session config:
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 30;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 30;
Session-Variablen (für angemeldete Benutzer. Alle anderen Benutzer haben die gleichen Informationen in der Sitzung):
stdClass Object ([id] => 1148 [ip_address] => [username] => testing [password] => $2y$08$Q4fjUfsuOKM/Q8cnQt6j0uSXP.3mCqMnzDY1nBA9RDlwm [salt] => sadsda [email] => [email protected] [activation_code] => [forgotten_password_code] => [forgotten_password_time] => [remember_code] => [created_on] => 1426181328 [last_login] => 1490008619 [active] => 1 [first_name] => Name [last_name] => Testing [company] => [phone] => [user_id] => 1148)
haben Sie ein CI-Upgrade durchgeführt, gab es ein Upgrade von PHP auf Ihrem Server? Bitte überprüfen Sie alle möglichen Konfigurationsänderungen und bearbeiten Sie diese auf Ihre Frage. Danke – Vickel
Wenn es funktioniert hat, und Sie den Code nicht bearbeitet haben, dann ist das, was Sie beschreiben, unmöglich ... obwohl zwei Benutzer, die die gleiche Sitzung teilen, schon ziemlich unwahrscheinlich sind mit einer richtig installierten Ion Auth. Überprüfen Sie die Dateiänderungsdaten, um sicherzustellen, dass niemand anderes etwas manipuliert hat. Außerdem bin ich sehr misstrauisch darüber, wie Sie das testen ... Verwenden Sie verschiedene Maschinen und/oder Browser, um diese Beobachtungen zu überprüfen? – Sparky
Ich teste das auf verschiedenen Geräten, verschiedenen Verbindungen und das Ergebnis bleibt gleich. Eine Sitzung wird erstellt, und alle Benutzer bleiben in dieser Sitzung bis zum Ablauf der Sitzung. Abmelden zerstört die Sitzung nicht, aber logged_in() gibt false zurück, so dass alle Seiten nach der ersten Weiterleitung zurück zur Anmeldung weitergeleitet werden. –