「403Forbidden」メッセージをカスタマイズするにはどうすればよいですか?このメッセージについてのみ、「403 Forbidden([URL to repository])」のような情報を追加したいと思います。どうやるか?ネイティブsvnクライアント、tortoise、Javaプログラマー環境など)などのsvnツールとの互換性を保存したいと思います。
-編集-
私の環境:
OS:Linux Debian
SVN:1.8.8
アクセスプロトコル:ApacheおよびDAVsvnによるHTTP
auth protolol config:authzsvnaccess
禁止されたメッセージを除いて、すべてが私が望むように機能します。これはユーザーを誤解させます。彼らは問題はサービスにあると考えていますが、実際の問題はアクセス権にあります。
Apacheを使用してエラーテキスト/ドキュメントをカスタマイズできます( http://httpd.Apache.org/docs/current/custom-error.html )が、ここでは役に立ちません。
エラーメッセージはクライアントソース(Subversion/libsvn_ra_serf/util.c
)に埋め込まれています。
svn_ra_serf__error_on_status(serf_status_line sline,
const char *path,
const char *location)
{
switch(sline.code)
{
case 301:
case 302:
case 307:
return svn_error_createf(SVN_ERR_RA_DAV_RELOCATED, NULL,
(sline.code == 301)
? _("Repository moved permanently to '%s';"
" please relocate")
: _("Repository moved temporarily to '%s';"
" please relocate"), location);
case 403:
return svn_error_createf(SVN_ERR_RA_DAV_FORBIDDEN, NULL,
_("Access to '%s' forbidden"), path);
見ていないと、他のクライアント(SmartSVN、Tortoise)が同じまたは非常に類似したHTTPクライアントライブラリを使用していると思われるため、同じ問題が発生します。クライアントの場合、サーバーからクライアントにカスタムエラーメッセージをルーティングする機能がありません。パスワードの失敗またはauthzによって拒否されました。
ただし、これが本当に必要な場合は、pre-commit
フックで必要なパスを特殊なケースに入れることができる場合があります。これは、フックスクリプトがゼロ以外のステータスで存在する場合、stdout
はユーザーにフィードバックされ、好きなように言うことができます。
問題は、リクエストを最初に認証する必要があることです。そのため、このようなソリューションは、非常に特殊な単一のケースでない限り、権限モデルで機能しなくなる可能性があります。 (いつでもクライアントをカスタマイズできますが、それはあなたがこれを望んでいるよりもはるかに遠いと思います)