2017-12-19 13 views
1

バックグラウンド情報:私はQnap NASを持っていて、スマートフォンやラップトップのような自分のクライアントの音楽や画像を配信するために、さまざまなステーション(基本的にサーバーアプリケーション)を使いたいと思っています。スマートフォンでQnapアプリQmusicとQphotoを使います。それはすべてうまく動作し、私はちょうど駅にログインするユーザー "管理者"の能力が嫌いです。htaccess:特定のユーザーエージェントのユーザー認証

私は特定のユーザーを.htaccessの認証ルールで完全にブロックすることができます。これはウェブブラウザを通じてステーションにアクセスするときはうまくいくが、アプリで問題を引き起こすのは、そのような認証を期待しないためである。

は今、私の質問:条件が真でない場合、これは無視されるべきである

if user-agent is not "Qmusic" then <authenticate> end if

:私はこのような程度の.htaccessファイルにされたif-then-else手続きが必要になります。これは何とかできますか?

私はしばらくの間インターネットを利用していましたが、何か面倒なことはありませんでした。

ご協力いただきありがとうございます。

+1

どのApacheのバージョンを使用していますか? – Ben

+0

私はApache 2.4を使用しています。 –

答えて

0

Apache mod_authz_coreのドキュメント、詳しくはRequire envディレクティブを参照してください。その参考例をthis answerのものと組み合わせると、ユーザーエージェントに基づいて変数を設定し、そのユーザーエージェントを認証から免除することができます。

参照されている答えは、以前のApache 2.2構文のものであり、まだmod_access_compatモジュールで2.4で利用可能ですが、新しい構文が優先されることに注意してください。

アパッチ2.4例:特に断りのない限り複数Requireディレクティブが暗黙のうちに、<RequireAny>ブロックに含まれていることを

SetEnvIf User-Agent ^Qmusic no-auth 

AuthType Basic 
AuthName "Protected Login" 
AuthUserFile /path/to/htpasswd 
Require valid-user 
Require env no-auth 

注意。これは、リクエストがhtpasswdの有効なユーザーまたは選択した認証メカニズムのいずれかと一致する必要があること、またはリクエストがQmusicユーザーエージェントに設定したno-auth環境変数と一致する必要があることを意味します。

+0

それはすでに素晴らしいAfroThundrに見えます。しかし、私はこれを正しく理解していますか?ユーザーエージェントがQmusicでない場合、認証が必要ですか?ユーザーエージェントIS Qmusicの場合、認証ウィンドウは開かれず、認証コードは無視されますか? (私はプログラミングに深く関わっているわけではありませんが、何も紹介せずに認証用のコードを置いて、最後の条件が奇妙に見えます...) –

+0

はい、 'Require'ディレクティブの働きにより、 1)有効なユーザー名/パスワードを入力するか、2)要求に「no-auth」変数を設定します。私たちは "Qmusic"にマッチする任意のユーザーエージェントのためにその変数を設定します。最終的には、ユーザエージェント 'Qmusic'に接続しているクライアントは認証する必要がなくなります。この構文は、Apacheの認証ブロックの典型です。より多くの例は私がリンクしているApacheのドキュメントで見つけることができます。 – AfroThundr

関連する問題