訪問者が私のウェブサイトに登録することを許可したくありません。ただし、テストの目的で、単一の登録ユーザーが必要であることがわかりました。たとえば、アクセスが制限された記事を公開して、テストユーザーが「汚れた洗濯物を干す」ことなく、サイトで記事がどのように見えるかを一般に公開します(実際には、実際に1日1回訪問する...)。 。
現時点での問題は、ユーザーのログインフォームを公開または非公開にする必要があるため、最終的にWebサイトを改ざんしてしまうことです。現在、私はログインフォームをサブカテゴリに非表示にすることでこの問題を「回避」し、カジュアルな訪問者にはすぐに表示されないようにしています。パブリックアクセス権を持つゲストに表示される内容を変更せずに、テストユーザーが制限付きとしてマークされたコンテンツを表示できるようにする代替メソッド(カスタムURLなど)を作成することはできますか?
公開されていないメニューを作成し、そこにユーザーログインページへのリンクを配置して、エイリアスに任意の名前を付けることができます。ユーザーマネージャーのオプションで登録の許可機能をオフにする限り、問題はありません。
次に、クライアントにURLを指定します。
したがって、手順は次のとおりです。
ブライアンピートの答えの拡張として:
あなたがURLに行くなら
domain.com/index.php?option=com_users&view=login
メニュー項目を設定したり、公開/非公開の問題を発生させたりせずにログインできます。これは、URL構造がわかっていれば、Joomlaでの問題の一部と見なすことができます。これを防ぐためのルールがありますが、通常はデフォルトでこのような直接パスを使用して、目的の場所に到達できます。
http://www.joomla.org/index.php?option=com_users&view=login
これが動作中です。ログインに直接アクセスできないメインのJoomlaサイトでも、そのようにアクセスできます。
私の要点は、適切なACLも使用することです。その「ちょうど」登録されたユーザーがJoomlaの構造を知っている人なら誰でも参加できます。また、ブライアンが言ったように、登録の許可がオフになっていることを確認してください。
フロントエンドのログインフォームのレイアウトをオーバーライドすることで、これを実現できるはずです。いくつかのPHPコードをレイアウトファイルの上部近くに追加します。この追加されたコードは、URLのカスタムパラメータと特定の値をチェックします。誰かが任意のURLを介してログインページにアクセスしようとした場合、カスタムパラメータと特定の値(abc = xyzなど)が含まれていない場合、コードは「return;」を発行して、フォームのレイアウトが表示用に処理されないようにします。
オーバーライドレイアウトファイルのこのコードを使用すると、URL(このカスタムパラメータと許容値を含む)を知っているユーザーだけがそのログインフォームを使用できます。
例:シークレットURLは
mydomain.com/?option=com_users&view=login&abc=xyz
次に、ログインフォームのオーバーライドレイアウトファイルの上部近くに次のコードを追加します。
if(JFactory::getApplication()->input->get('abc')!='xyz'){
return;
}
ログインフォームがなくても、管理しているWebサイトを編集するためにフロントエンドログインが必要になることがよくあるため、よく似た問題に直面しました。私はブラウザツールバーに追加した小さなbookmarkletを作成してしまいました。ブックマークレットは私(またはコードのコピー先)だけが利用できるため、これは明らかに非常に「ローカルな」ソリューションですが、これはすべてのJoomlaサイトで機能し、信じられないほど時間を節約できます。リンクとログインフォームをクリックするだけです。表示されます(もちろん、Joomlaサイトにいることを前提とします...)。
javascript:void((function(){var loc = location.href; loc.indexOf("?") == -1 ? (location.href = loc+"?option=com_users&view=login") : (location.href = loc+"&option=com_users&view=login");})());