日期:2014-05-16  浏览次数:20723 次

有什么办法可以防止别人拼url地址来访问到服务器上的图片吗?
有个个人资料的页面

<span class="img">
        <img id="Content_UserBaseInfo1_Img" src="http://XXX.XXX.XXX.XXX/public//zp/new/2092639.jpg" style="width:134px;" />
</span>

这个是页面中放照片的span的代码

现在的问题是,那个“2092639”是一个id号,登录的用户,可以拼接url地址,直接查看其他用户的照片。
怎么才能做到直接在浏览器上敲http://XXX.XXX.XXX.XXX/public//zp/new/2092639.jpg种url看他不到照片?
------解决方案--------------------
图片改成有一个ashx输出  
<configSections>
    <section name="rewriter"
         requirePermission="false"
         type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
  </configSections>

  <rewriter>
    <rewrite url="~/(p_img\d{3}/.+?)_(\d{1,3})x(\d{1,3})\.(jpg
------解决方案--------------------
jpeg
------解决方案--------------------
png
------解决方案--------------------
gif
------解决方案--------------------
bmp)$"
             to="~/ResponseImg.ashx?FilePath=$1&amp;Width=$2&amp;Height=$3&amp;Hex=$4"/>
  </rewriter>



public class ResponseImg : IHttpHandler
    {
        static readonly DateTime Refresh;
        static readonly DateTime Now;
        static ResponseImg()
        {
            Now = DateTime.Now;
            Refresh = Now.AddMonths(1);
        }

        public void ProcessRequest(HttpContext context)
        {

            if (!string.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"]))
            {
                DateTime IfModifiedSince = DateTime.Parse(context.Request.Headers["If-Modified-Since"]);
                if (IfModifiedSince > Now)
                {
                    context.Response.StatusCode = 304;
                    return;
                }
            }
            //你可以在这里获取图片的ID,然后判断是否属于用户的,是才输出,不是输入默认图片
            //string folder = context.Request.Q