ASP.NET MVC - 仅限图像+经过身份验证的用户

时间:2011-04-09 17:20:51

标签: asp.net-mvc asp.net-mvc-3

是否有可能以某种方式仅允许经过身份验证的用户查看某些图像?我目前正在建立一个网络图库,我不希望未经过身份验证的用户能够看到图像。

2 个答案:

答案 0 :(得分:12)

您可以将这些图像放在用户无权访问的服务器上(例如~/App_Data文件夹),以防止直接访问它们,然后使用控制器操作来提供它们。此操作将使用Authorize属性进行修饰,以仅允许经过身份验证的用户调用它:

[Authorize]
public ActionResult Image(string name)
{
    var appData = Server.MapPath("~/App_Data");
    var image = Path.Combine(appData, name + ".png");
    return File(image, "image/png");
}

然后:

<img src="@Url.Action("Image", "SomeController", new { name = "foo" })" alt="" />

在视图中,您还可以在显示图像之前测试用户是否经过身份验证。

答案 1 :(得分:0)

是的,可以隐藏未经身份验证的用户的图片。

根据图像的显示方式,您可以通过

隐藏它们

1.在控制器操作上使用Authorize属性

2.在将在

中显示图像的视图中包装HTML
if (User.Identity.IsAuthenticated) {
    // image HTML here   
}

如果没有经过身份验证,您可能会将图片放在无法查看的位置,例如Darin建议的App_Data