2

私はこのようなものを使ってruby-on-railsを学び始めました:http: //guides.rubyonrails.org/getting_started.html

そして、私はこのステップで停止します:

10セキュリティ

class PostsController < ApplicationController
  http_basic_authenticate_with :name => "dhh", :password => "secret", :except => [:index, :show]

  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all
    respond_to do |format|

    [...]


class CommentsController < ApplicationController
  http_basic_authenticate_with :name => "dhh", :password => "secret", :only => :destroy

  def create
    @post = Post.find(params[:post_id])

    [...]

そして、それは機能しませんでした。つまり、パスワードとログインのプロンプトは表示されず、エラーも発生しません。私はそれをしただけで何も変わりませんでした。

誰かがそれを手伝ってくれるか、少なくとも問題を解決するために正しい方向に私を向けることができますか?

4

1 に答える 1

1

それはあなたが持っているRailsのバージョンに依存します。3.2の場合は、ページの上部に表示されているように、正しく機能するはずです。

このガイドはRails3.2に基づいています。ここに示されているコードの一部は、以前のバージョンのRailsでは機能しません。

したがって、最初にそれを確認してから、バージョンが以前のものである場合は、これを試してください。

class ApplicationController < ActionController::Base
USER, PASSWORD = 'dhh', 'secret'

before_filter :authentication_check, :except => :index

#Any other method

 private
  def authentication_check
   authenticate_or_request_with_http_basic do |user, password|
    user == USER && password == PASSWORD
   end
  end
end

正しく動作するはずです。次に、最後のオプションとして、適切なクレデンシャルを一度指定すると、アプリはそれがあなたであると認識し、すべてを実行できるようになるため、(念のため)他の方法でユーザー名を変更してみてください。次のように行を編集します。

http_basic_authenticate_with :name => "anotherName", :password => "secret", :except => [:index, :show]

明らかに、このコード行は(前述のとおり)Rails 3.2(実際には3.1でも機能するはずです)以上でのみ機能します。

于 2013-03-15T10:24:39.817 に答える