2016-05-15 7 views
0

特定のビューからのみアクセスできるようにコントローラアクションを制限する方法はありますか?データベース内の照会されたエンティティの詳細ページがあります。基本的にボタンと単純なJS確認プロンプトが表示されます。このオブジェクトのプロパティをほとんど変更せずにデータベースに戻したいと思います。私は仕事をするコントローラーのアクションメソッドを開発しましたが、ユーザーはブラウザーに特定のURLを渡すことによってエンティティを意図的に変更できないように、アクセスを制限する方法がわかりません。指定されたボタンを押すことによって、この特定の詳細ページでのみアクションにアクセスできるようにしたいと思います。 [ChildActionOnly]を使用しようとしましたが、ビューではなく別のアクションメソッドからのみアクセスできます。ASP.NET MVCコントローラのアクションが特定のビューに限定されています

ありがとうございました。

+0

参照URLを取得するのに 'Request.UrlReferrer'を使うことができます(正しくない場合BadRequestのエラーページを返します) –

+0

問題を解決するための正しい方向でした。 – Dandry

答えて

0

Stephen Mueckeさんのコメントのおかげで、私はそれを動作させることができました。

ボタンは、制限されたコントローラのアクションにリダイレクトする、シンプルAction Linkある:

public ActionResult ReturnBook(int id) 
    { 
     if (Request.UrlReferrer == null) 
     { 
      return HttpNotFound(); 
     } 

     //code 
    } 

方法チェック、まったくUrlReferrerがある場合。ブラウザにaction urlを入力すると、リファラーがnullになります。 ビューからActionLinkによってコールが行われた場合、UrlReferrerはnullではなく、オプションでそのプロパティーRequest.UrlReferrer.AbsolutePathをチェックして、呼び出しを行うことができる必要なURLと比較することができます。私の場合は、コード内のどこにでもこのメソッドを呼び出さないので、私はちょうどnull/notnullの状態にとどまった。

関連する問題