2012-11-14 24 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

这不是你停止这种“黑客”的地方。在您的控制器或其他地方,您会检查当前已通过身份验证的用户是否拥有该照片并将其重定向至显示“未找到图片”的页面 - 或类似的内容。

相关问题