0

HMVCと一緒に初めてTankAuthを使用する。私のアプリケーションでは、2つのタイプのユーザーがあります。1つは学生で、もう1つは機関です。
ユーザータイプごとに2つのモジュールを作成し、タンク認証ライブラリを分離しました。ユーザーの登録、ログイン、テーブルの両方が互いに異なります。

ここで、ホームページのように両方のユーザーに共通する他のページを追加しようとすると、どちらのライブラリを使用する必要があります。
複数のユーザーの問題を処理するには、より良い解決策が必要であることを私は知っています。どこが間違っているのか教えてください。そして、私はこの問題に取り組むために何をすべきか。

4

2 に答える 2

1

そうです、これを処理するためのより良い方法があります。ユーザー/登録システムを複製するのは間違った方法です。

ユーザータイプ列を含めるようにTankAuthを変更してから、そのユーザータイプを確認する必要があります。'user_role'の'users'テーブルに新しい列を提案します。

https://github.com/ilkon/Tank-Auth/blob/master/schema.sql

user_typeはintまたはenumとして処理できます。列挙型は後で変更するのが難しいので、私はintに傾倒します。user_rolesの新しいテーブルを追加することもできますが、私は通常、これらを構成ファイルに保存するだけです。

スキーマを変更したら、Tank_Authコードに新しい列への参照を(可能なオプションとともに)追加する必要があります。作成、更新(データはタンク認証コントローラー:controllers / auth.phpからモデルに渡されます)およびルックアップ関数に含める必要があります。私はuser_roleによるルックアップもtank_authモデル(application / models / tank_auth / users.php)に追加します:

function get_user_by_role($role)
{
$this->db->where('LOWER(user_role)=', strtolower($role));

$query = $this->db->get($this->table_name);
if ($query->num_rows() == 1) return $query->row();
return NULL;
}

最後に、ユーザーの種類(およびユーザーがアクセスできるコンテンツ/機能)を追跡できるように、ユーザーの役割をログイン時にセッションに設定する必要があります。

私はいくつかのプロジェクトでTank_Authを自分で使用しました。

于 2011-12-26T15:51:54.880 に答える
0

calvinが言ったことに基づいて、codeigniterはアプリケーションを保護するのに良い仕事をします、tank authはそれらを検証します、しかしあなたは異なるユーザーレベルを必要とします、これは通常許可に該当します。開発者としてのあなたの仕事は、codeigniterがCSRFとXSSを介してセキュリティチェックを行うことを確認することです(特に、管理者が「スクリプト」として許可されていないタグを追加する必要がある場合は、グローバルではなく、各検証ルールでこれを行うことをお勧めします)。ここで、認証ライブラリに関係なく、コントローラーを個人的にセットアップする方法を確認できます...

シリアル化された配列またはjsonでエンコードされた「permissions」という行をusersテーブルに含める必要があります。または、intフィールドを必要とするパーミッションビットマスキングでGoogle検索を実行できます。

于 2011-12-27T03:52:56.590 に答える