2

私は現在Webアプリに取り組んでおり、セッションにログインしたユーザーが作成され、データベースに記録されます。

発生しているのは、ユーザーが独自のオプションを使用せずにランダムにログアウトされることです。バックストーリーは、これは通常、アカウントを共有しているユーザーに発生しているということです (最善のことではありませんが、アプリの性質上、許容する必要があることを意味します)。

これがランダムなログアウトの理由でしょうか? または、CI とデータベースへのセッションの保存にさらに深いものがありますか? また、多くの AJAX リクエストをまとめて実行すると、SESSION ID が変更され、データベース レコードが上書きされてユーザーがログアウトされる可能性があることも読みました。またその可能性はありますか?これが起こらないようにするためのパッチを書いたので、これはそれほどではないと思います。

セッション構成:

$config['sess_cookie_name']     = 'app';
$config['sess_expiration']      = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update']  = 300;
$config['sess_use_multisessions'] = TRUE;
$config['sess_multisession_expiration'] = 10;
4

3 に答える 3

0

構成設定$config['sess_time_to_update'] = 300;を変更して$config['sess_time_to_update'] = 8400;、以前よりも動作が改善されました。これを行うと、セッションの更新に時間がかかり、更新セッション ID が同じままになるため、セキュリティ上の問題が発生する可能性があります。

さらに、これに対する完璧な解決策も探しています。スタックオーバーフローで説明されている他の多くのスレッドと同様に、ajax にも取り組んできましたが、それは私にとってはうまくいきません。

DB ( ci_sessions table) では、フィールド タイプも に変更しましたuser_agenttext、これも機能しません。

于 2015-05-29T06:32:16.703 に答える
0

セッションを DB (ci_sessionsテーブル) に保存していますか? のフィールド タイプをuser_agentに変更してみてくださいmediumtext。これvarchar255はデフォルトであり、一部のユーザー エージェント文字列はより長く、これによりログアウトが発生する可能性があります。

于 2013-11-26T10:20:00.457 に答える