F1大好きな、インチキ技術者の日記

F1大好きなインチキ技術者が情報を発信して、自分を変えようとしている日記です

ApacheでQueryString(URLパラメータ)の値によってBASIC認証をかけたい!

Apacheで特定のQueryString(URLパラメータ)に応じてBASIC認証をかける必要が出てきたのでRewriteを用いて対応しました。*1

設定したいこと

  • 「area=admin」がQueryStringに設定されている場合BASIC認証をかける。
  • 「area=admin」がない場合はそのまま表示できる。

当初は、 SetEnvIf を用いていけるかな?と考えていたけど、SetEnvIf の REQUEST_URIにはQueryStringは含まれていない。

「むー、こまった。」と途方に暮れていたらQueryStringを扱うにはRewriteを使いなさいと書いてあったので早速検討した。

「なんでBASIC認証かけるのにRewriteなんだよ。。。」ってブツブツ言いながら以下の設定をApacheに追加したら思ったとおりの挙動となりました。

Apacheの設定

RewriteEngine On
RewriteCond %{QUERY_STRING} area=admin
RewriteRule (.*) $1 [E=admin_access:1]

<Location />
    Order allow,deny
    Allow from All
    Deny from env=admin_access
    
    AuthUserFile /etc/httpd/conf/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Administorator's Area"
    AuthType Basic
    require valid-user
    
    Satisfy Any
</Location>

やっぱり、ちょっと違和感あるな。。。(^_^) ほかに方法ないのかな~

参考にさせていただいたサイト

まとめサイト: SetEnvIf の Request_URI には Query String は含まれない wall-climb » 特定URLのみBASIC認証を除外する

*1:2014年08月22日にQiitaに投稿した記事です。

Redmineを4.0.5から4.1.0にアップデートした時の事

常に新しいRedmineを使いたいのでアップデートを率先してやっています。 業務で利用しているので、お昼休みの一時間だけでなんとかするミッションです🥺アップデートは、手順に従って実施するのみのはず。

いつも大変お世話になっている、こちらのサイトの通りにやっていきます。

guide.redmine.jp

4.0系から4.1系のアップデートなのでその部分のみ、svnコマンドを変更しました。

# svn sw ^/branches/4.1-stable

ここまでは問題なかった。 でも、問題が起きるのはいつもここからだ。DB migrateを実行すると今回もやっぱりエラーになった😅

その対応を忘れないうちに書き留めています。

プラグインをたくさん入れているので、手順通り実施してもエラーになるのは慣れっこです🤐

NoMethodError: undefined method `assets'

まず、こちらのエラーがでました😅

# bundle exec rake db:migrate RAILS_ENV=production
rake aborted!
NoMethodError: undefined method `assets' for #<Rails::Application::Configuration:0x000055a03c7ecb88>
Did you mean?  asset_host

調べたところ、対応策があった。これが正しいのかどうか判断できなかったが、やってみたら上手くいった。

Sprockets::Railtie::ManifestNeededError

もう一度 DB migrateを実施したところ今度は違うエラーになった😅

# bundle exec rake db:migrate RAILS_ENV=production
rake aborted!
Sprockets::Railtie::ManifestNeededError: Expected to find a manifest file in `app/assets/config/manifest.js`
But did not, please create this file and use it to link any assets that need
to be rendered by your app:

Example:
  //= link_tree ../images
  //= link_directory ../javascripts .js
  //= link_directory ../stylesheets .css
and restart your server

これは、指示通りファイルを作れば良いように見える。同じような対応をしている方もいた。 Exampleの通りファイルを作ったら問題なくなった。

Redmine 4.1 は新機能がいっぱい

Redmine 4.1は新しい機能がたくさん実装されました。個人的には、「通知メールの件名にステータスを含めない」と言うのがありがたいです😊

GmailOutlookを使っていると件名でスレッド化されますからね。 他にも便利な機能があるので、これから試していこうと思います。

動かないので外したプラグイン

お昼休みだけでは解決できなかったので今後継続対応を検討中。この機能は必須なんです、プロジェクトに癒やしを提供する大切な機能なのです😍

後日談

4.1対応済みのForkを教えていただきました!無事に動きました😍😍😍

プライバシーポリシー・問合せ