Я работаю над модернизацией старого приложения CodeIgniter.Разделяя приложение на передний и задний края.
Новый внешний интерфейс представляет собой угловое приложение SPA.Бэкэнд все еще использует приложение CI.CI использует Ion_Auth для авторизации пользователей.
Все работает нормально, если оба находятся в одном домене, например localhost
Проблема в том, что каждая часть должна быть на разных URLдомены , т.е. .:
- Frontend - localhost: 8081, в будущем будет example.com
- Backend - localhost: 8082, в будущем будет API.example.com
Таким образом, Ion Auth может войти в систему пользователей, но когда я запрашиваю, вошел ли пользователь в систему, он возвращает false
.CI doesent больше сохраняет сеанс.
Я также заметил, что когда оба находятся в одном домене , папка session
содержит только один файл, что означает, что CI распознает сеанс.
Когда я устанавливаю на разные домены , папка session
создает новый файл для каждого запроса XHR.Это означает, что КИ больше не держит сессию.
Почему это происходит?Что я должен сделать, чтобы фронт и бэкэнд работали должным образом с Ion Auth?
Вот моя конфигурация CI:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = BASEPATH . 'var/session/';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();
Я также установил:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
И вот как я делаю XHR-запросы.
$http({
url: $rootScope.API_URL + "/user/check",
method: "POST",
headers: { "Content-Type": undefined },
data: { /*...*/ }
}).then( /*...*/ )