2012-11-14 25 views
0

我想知道如何可以通過我的主鍵INT ID 本身份識別碼放入使用每個循環asp.net MVC3如何傳遞ID可變的,但沒有瀏覽器

一個 .tolist方法

VIEW

@foreach (var item in Model) 

{ 

@Html.ActionLink("View", "detail", new { id = item.myid}) 

@Html.ActionLink("Add Pictures", "pictures") 

} 

的.tolist控制器

[Authorize] 

public ActionResult mylist(list listings) 
    { 

var showlist = (from s in db.list where getid == s.RegistrationID select s).ToList(); 

     return View(showlist.ToList()); 

} 

正如你可以從上面我確實有[授權]符號上MYLIST這是foreach語句是這樣的人已經登錄上看到。我的問題是我可以把int myid放在@ Html.ActionLink(「添加圖片」,「圖片」) ??我不想在瀏覽器中使用它,因爲用戶可以輕鬆地輸入不同的數字並查看其他人的圖片。

回答

0

你應該傳遞中的id網址

@Html.ActionLink("Add Pictures", "pictures",new { @id=item.ID}) 

而在你的照片的操作方法,你應該檢查當前用戶是否登錄的用戶(認證),他有適當的權限添加圖片(授權)。

public ActionResult pictures(int id) 
{ 
    //TO DO : Check the user has sufficient permission to add pictures. 
    // The implementation of this checking is completely up to you. 
    // If not authorized redirect to a view to show the "Not authorized" message 

} 
0

難道你不能通過檢查他們的用戶ID是否與圖片所有者的ID相匹配來阻止他人查看其他人的圖片嗎?

您必須將id傳遞給用戶,您無法避免它。

+0

我可以嘗試,但我的印象是,如果你顯示INT變量警告人們登錄,它可能會導致更容易的黑客攻擊。所以基本上,如果一個用戶使用相同的憑證擁有多個配置文件,那麼您必須將一個變量傳遞給瀏覽器? – user1591668

+0

理想情況下,你不會顯示一個INT變量,你會顯示一串隨機字符或類似的東西。但是如果黑客猜到了一串字符呢?您的網站仍然不安全。這就是爲什麼您必須在控制器內執行檢查以確保用戶有權查看照片。 – NoPyGod

0

這不是你停止這種「黑客」的地方。在您的控制器或其他地方,您會檢查當前已通過身份驗證的用戶是否擁有該照片並將其重定向至顯示「未找到圖片」的頁面 - 或類似的內容。

相關問題