itsureshuk Ответов: 1

Как запретить доступ к папкам и изображениям с помощью ASP .Чистый веб.конфиг


Привет,

В приложении Asp .net мне нужно написать код для отказа в доступе к папкам и изображениям, когда непосредственно пользователи пытаются получить доступ, но те же изображения должны отображаться на веб-странице.

Я использовал приведенный ниже код в web.config, он блокирует доступ к изображениям , но не может отображаться и на веб-странице.


<system.webServer>

    <modules>
      <remove name="FormsAuthenticationModule" />
      <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />

      <remove name="UrlAuthorization" />
      <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
    </modules>                

</system.webServer>


<location path="Photos/photos2016">
    <system.web>
      <authorization>               
        <deny users="*"/> 
      </authorization>

    </system.web>
  </location>


Что я уже пробовал:

<system.webServer>

    <modules>
      <remove name="FormsAuthenticationModule" />
      <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />

      <remove name="UrlAuthorization" />
      <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
    </modules>   </system.webServer> 


<location path="awards/awards2015">
  <system.web>
    <authorization>
      <deny users="*"/>
    </authorization>

  </system.web>
</location>

1 Ответов

Рейтинг:
2

Thomas Nielsen - getCore

Сделайте страницу, которая получит ресурс, например, если с помощью Webforms можно было бы получить GetGraphics.aspx?ressourceid=mypicture.png, который затем требует активного сеанса или файла cookie.

Если вы используете mvc, вы можете сделать то же самое с маршрутизацией... что в конечном счете также может быть установлено в web. forms, например

public class UriActionFilter : System.Web.Mvc.ActionFilterAttribute
{
    public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
    {
        if (System.Threading.Thread.CurrentPrincipal.Identity.IsAuthenticated)
        {
            // Sample: somehow identify the user, in case of a custom identity, replace the below line to get the user identifier
            var user = System.Threading.Thread.CurrentPrincipal.Identity.Name;

            // get the parameter that will let you know what is the image or path that is being requested now
            var ctxParams = filterContext.ActionParameters;

            // if the user does not have the permission to view, return 403
            filterContext.RequestContext.HttpContext.Response.StatusCode = 403;
            return;
        }
        base.OnActionExecuting(filterContext);
    }
}

Который я взял в качестве ответа здесь: c# - ASP .NET MVC-доступ к файлам - переполнение стека[^]