2

ログインしているユーザーが管理者 (user.admin?) である場合にのみ有効なルートを設定する必要があります。私はsidekiqのためにこれをやっていますが、質問は同様の用途に有効です.

ここに私のルートコードがあります:

class AdminConstraint
  def matches?(request)
    !request.session['warden.user.user.key'].nil? and request.session['warden'].user.admin?
  end
end

require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq', :constraints => AdminConstraint.new

sidekiq wiki からこのコードを取得しました: https://github.com/mperham/sidekiq/wiki/Monitoring 彼らが投稿したコードを試してみましたが、うまくいかなかったため、投稿したばかりのようにいくつかの変更を加えました。上記のコードは、ユーザーが nil と評価すると機能しません。

これに対処する正しい安全な方法は何ですか?

助けてくれてありがとう!

4

3 に答える 3

0

デバイスのコントローラーで何らかのタイプのフィルタリングを行っている場合は、ヘルパーを使用できます

class ###Controller < ApplicationController

  before_filter: :authenticate_admin!

def index
end

または、つまり、アクセスを許可しようとしているデバイスモデル

before_filter: :authenticate_user!
before_filter: :authenticate_author!

バダレスが言ったように。devise のヘルパー メソッドでは不十分な場合は、承認に CanCan gem を使用できます。

それが役に立てば幸い!

于 2013-03-12T04:35:47.453 に答える
0

ユーザーが誰であるかに応じてルートを変更しようとしているわけではありません (多くのハッキングなしでレールで可能かどうかさえわかりません)、ユーザーのアクションを承認しようとしています。

優れた認証ライブラリがいくつかあります。個人的にはCanCanが好きですが、他にもたくさんあります。

于 2013-03-12T04:13:44.560 に答える