0

フロントエンドに自動的にログインするユーザーがバックエンドにも自動的にログインするシステムプラグイン(認証プラグインなし!)を作成する必要があります。(ユーザーには、/ administratorを介してバックエンドにログインする権限があります。)

以下に示す非常に基本的なコードを使用して実行しようとすると、結果は良好ですが、バックエンドに移動した場合でも、ユーザーはログインする必要があります。

セッションテーブルでは、バックエンドセッション行が設定されていますが、「guest」フィールドは0ではなく1に設定され、useridは正しいIDではなく0に設定されています。

これはどのように行うことができますか?

function onAfterInitialise() {

if(JFactory::getUser()->get('id')) {  // logged in? 

    $credentials = array();
    $credentials['username'] = "walter"; // hardcoded first
    $credentials['password'] = "123"; // hardcoded first

    $options = array();
    $options['action'] = 'core.login.admin'; 
    $result = $app->login($credentials, $options);  // this seams to work
    if (!($result instanceof Exception)) {
        $app->redirect("www.bummer.de");
    } 
}
4

1 に答える 1

1

この質問Joomlaで述べたように、これは非常に悪い考えであることを除けば!は、フロントエンド ( /index.php) とバックエンド アプリケーション ( /administrator/index.php) の 2 つのアプリケーションとして実装されます。

提供されたコードでは、どこ$appが初期化されているかを示していないので、おそらく$app->JFactory::getApplication('site');.

管理アプリにログインするには、フロントエンド クライアント アプリではなく管理アプリを取得する必要があります。

$adminApp->JFactory::getApplication('administrator');
$result = $adminApp->login($credentials, $options);

nb これは、スタック オーバーフローのために入力されたテストされていないコードです...正しいはずです。

于 2012-06-28T22:52:35.893 に答える