0

テストアプリケーションをセットアップし、認証を処理するようにセットアップを考案しました。さらに、登録後にプロファイルの作成ページに送信されるコンポーネントをセットアップしました。これはうまく機能します。

私が抱えている問題は、ログインしているユーザーがプロファイルを編集しようとすると、クエリ文字列を変更して別のユーザーのデータにアクセスするのが簡単なことです-

http://localhost:3000/profiles/1/edit

私が持っている質問は、これを現在のユーザーにロックして、データのみを編集できるようにするにはどうすればよいですか?

ロビー

4

2 に答える 2

1

より正確で安全な認証のために、セッションと一緒にトークン認証を使用できます。

devise :token_authenticatable をモデル User に追加します。これにより、ユーザーが作成されるたびに users テーブルのフィールド authentication_token フィールドに認証トークンが作成されます。

次に before_filter :verify_auth_token を探します

def verify_auth_token
  if current_user.authentication_token == params[:auth_token]
   return true 
  else
   return false
  end
end

また、編集リクエストは http:///profiles/1/edit?auth_token=12wqaasaeaad である必要があります

于 2012-05-31T12:07:33.020 に答える
1

私はに行きbefore_filterます。

# in profiles controller
class ProfilesController < ApplicationController

  before_filter :find_profile
  before_filter :check_if_authorized 

  def find_profile
    @profile = Profile.find(params[:id])
  end

  def check_if_authorized
    render :status => 404 and return unless current_user == @profile.user
  end

end

仮定:

  • デバイスモデルに名前が付けられますUser
  • ユーザーには 1 つのプロファイルがあります
  • ユーザーがログインしているかどうかをすでに確認しています
于 2012-05-31T10:58:59.720 に答える