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

ebb*_*ebb 5 asp.net-mvc asp.net-mvc-3

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

Dar*_*rov 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");
}
Run Code Online (Sandbox Code Playgroud)

然后:

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

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