私の MVC アプリケーションには、5 種類のユーザーがいます。
guest, customer, deliver person, staff and admin
特定のユーザーがアクセス権のないページを表示しようとすると、特定のページにリダイレクトされ、残りのスクリプトが終了します。
たとえば、顧客または配達担当者がアクセス権のないページを表示しようとした場合、それらはリダイレクトされて戻ってきますhttp://www.mysite.com/members/
。たとえば、ゲストがメンバー エリアにアクセスしようとすると、ログイン ページにリダイレクトされます。
私Auth
のクラスはそのチェックを行い、ログインプロセスも担当しています。
$auth->login($username, $password)
呼び出したログインの詳細を検証したら
$this->http->redirect()
メソッドの下部にありlogin()
ます。
public function redirect() {
if($this->auth->isLoggedIn()) {
switch($_SESSION['accountType']) {
case 1:
$url = $this->config->setting('url.members');
break;
case 2:
$url = $this->config->setting('url.members');
break;
case 3:
$url = $this->config->setting('url.staff');
break;
case 4:
$url = $this->config->setting('url.admin');
break;
}
}
else {
$url = $this->config->setting('url.base') . 'login';
}
$this->setHeader('Location', $url);
}
この$http->respond()
メソッドは後で呼び出され、追加されたヘッダー (上記で追加された「場所」など) を送信します。
redirect()
メソッドが実行すべきではない作業を実行していると考えていますが、よくわかりません。私には、私のHttp
クラスは、人々がログインしているかどうか、人々が持っているアカウントの種類をチェックするべきではなく、ヘッダーを追加して応答をクライアントに送り返すなどのことだけを行うべきだと思われますが、持っているのは間違っているようですクラスのredirect()
メソッドAuth
も承認のみを処理する必要があるためです。
どんなアイデアも素晴らしいでしょうありがとう。