是否有可能以某种方式仅允许经过身份验证的用户查看某些图像?我目前正在建立一个网络图库,我不希望未经过身份验证的用户能够看到图像。
答案 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.在将在
中显示图像的视图中包装HTMLif (User.Identity.IsAuthenticated) {
// image HTML here
}
如果没有经过身份验证,您可能会将图片放在无法查看的位置,例如Darin建议的App_Data
。