私は戻って画像とともに、直接のリンクを防ぎ、以下のコントローラがあります。この作品MVCでは、どのように呼び出し動作を決定しますか?
public class ImageController : Controller
{
[HttpGet]
public ActionResult Details(string id, string file)
{
if (null == Request.UrlReferrer ||
Request.UrlReferrer.Authority != Request.Url.Authority ||
Request.UrlReferrer.AbsolutePath.ToLower() != Url.Action("Photos", "Home", new { id = id }).ToLower())
{
return base.File(Server.MapPath("/Content/images/notfound.jpg"));
}
// else process and return image
}
}
が、それはわずかな香りを持っています。私にこれを教えるMVC-ierがありますか?私は当初はControllerContext
を期待していましたが、そうではありませんでした。あなたのビューで
@foreach (var item in Model.Items)
{
<li>
<img src='@Url.Action("Details", "Image", new { id = Model.Project, file = item.ThumbnailPath })' />
</li>
}
全体のことは、わずかな香りを持っています。これは怒られます。多くのユーザーはRefererを送信しません。私はOperaがデフォルトでRefererを送らないと信じています。 – SLaks
あなたが同意してうれしいです。私の質問のポイントは、3行を1に置き換えるだけでなく、UrlReferrerとそのすべての問題を回避することでした。 –