0

特定の人の特定の投稿へのアクセスを制限するトークンを生成しています。すべてが正常に機能していますが、トークンを持っている人は誰でも、表示のみが許可されている投稿ではなく、任意の投稿を見ることができます。たとえば、トークンが post/1 と post/1 のみに対して生成された場合、ユーザーは同じトークンを使用して post/2 にアクセスできます。これを修正するにはどうすればよいですか?

これが私のポストコントローラーです

before_filter :restrict_access, only: [:show]

投稿コントローラーの *private restrict_access メソッド* は次のとおりです。

def restrict_access
  link_token = LinkToken.find_by_token(params[:token])
  head :unauthorized unless link_token
end

前もって感謝します

「ID のない投稿が見つかりませんでした」というメッセージが表示される

def restrict_access
  post = Post.find(params[:post_id])
  link_token = LinkToken.find_by_token(params[:token])
  head :unauthorized unless link_token
end
4

1 に答える 1

1

トークンが存在するかどうかのみを確認するため、どのトークンが入力されても問題ありません。あなたのLinkTokenモデルでは、投稿が外部キーとして保持されていると思いますが、あまりにも修正できないでしょう。

はいのときは、このようなことを試してください(find_by_x ヘルパーは Rails 4 で非推奨になりました) それらは単一のリソースを返します:

link_token = LinkToken.where(post_id: params[:id], token: params[:token]).first

于 2013-06-03T22:01:58.053 に答える