Лучшим способом было бы поместить файлы в другое место и написать некоторый код для доступа к ним - тогда этот код может проверить, есть ли у вызывающего пользователя необходимые права.
Например, вы можете хранить файлыв вашем /uploads/xyz123/
каталоге.Затем, чтобы загрузить файл, скажем, myresume.pdf
, пользователь должен будет перейти на http://yourserver/download.aspx?file=myresume.pdf.
. Затем эта страница выполняет необходимые проверки, загружает файл и выводит его как двоичный файл в браузервот так:
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename=" + filename);
Response.AddHeader("content-length", binaryStream.Length.ToString);
Response.BinaryWrite(binaryStream.ToArray());
Response.Flush();
Response.End();
Ни один пользователь никогда не узнает, где на самом деле хранятся файлы.