2010-07-29 1 views
2

У меня есть сайт asp.net 2.0 (.net3.5) на II6. Это настройка для проверки подлинности форм. Я установил «aspnet_isapi.dll» в качестве записи в «Таблице приложений подстановочных знаков» в IIS, чтобы все запросы проходили через asp.net. В web.config у меня есть запретить все анонимный пользователь с помощью следующей настройки:Как передать аутентификацию форм ASP.NET, чтобы не проверять некоторые расширения файлов?

<system.web> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 
    ... 
</system.web> 

Я хотел бы сделать это так, что файлы с определенными расширениями (в частности файла изображения, такие как .gif, .jpg) не требуется для аутентификации. Эти файлы расположены в разных папках, поэтому просто разрешение на использование папки с изображениями не будет работать.

Я изменил свой собственный HttpModule аутентификации форм, чтобы игнорировать все такие запросы и просто вернуться. Но поскольку он игнорирует эти файлы и не создает Принципала, запрос остается анонимным и получает ошибку проверки подлинности.

В идеале было бы здорово, если я могу сделать какой-либо один из следующих вариантов, но это не похоже, что это то, что может быть сделано:

1) позволяют исключить некоторые расширения файлов, когда настройка отображения подстановочные в ИИС.

2) В моей собственной форме проверки подлинности HttpModule я могу как-то сказать asp.net прекратить обработку asp.net pipleline для этого файла или просто остановить аутентификацию для него.

3) Дайте нам возможность использовать групповые символы в атрибуте путь к расположению тега в web.config, таких как:

<location path="*.jpg> 
    <authorization> 
     <allow users="?"/> 
    </authorization`> 
</system.web`> 

Единственное решение, которое я могу думать о том, чтобы удалить отображение подстановки в IIS и добавить Картинка Application Extension Mapping индивидуально, поэтому не все запросы обрабатываются asp.net. Но тогда я рискую потерять определенные типы файлов, не говоря уже о том, что было бы утомительно добавлять его отдельно для всех известных типов файлов (за вычетом файлов изображений)

Любые идеи?

ответ

0

Может быть, вы можете попробовать использовать HttpHandlers раздел назвать расширения для исключения

<system.web> 
    <httpHandlers> 
     <add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler" /> 
     <add verb="*" path="*.csv" type="System.Web.HttpForbiddenHandler" /> 
     <add verb="*" path="*.private" type="System.Web.HttpForbiddenHandler" /> 
    </httpHandlers> 
</system.web> 

, а затем создать свой собственный HttpHandler обрабатывать файлы, запрашиваемые пользователем.

Вы можете прочитать здесь - http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q307985#2a

это только мои мысли о вашей проблеме.

Спасибо, Arty

+0

Спасибо за ответ Arty. Но если запрос не прошел проверку подлинности, он никогда не достигнет httphandlers. Поэтому я не знаю, как это будет работать. – Buma

1

создать общую аутентификацию основного

Public Class BlowByAuthenticatedIdentity 
    Implements IIdentity 

    Public ReadOnly Property AuthenticationType() As String Implements System.Security.Principal.IIdentity.AuthenticationType 
     Get 
      Return "BlowBy" 
     End Get 
    End Property 

    Public ReadOnly Property IsAuthenticated() As Boolean Implements System.Security.Principal.IIdentity.IsAuthenticated 
     Get 
      Return True 
     End Get 
    End Property 

    Public ReadOnly Property Name() As String Implements System.Security.Principal.IIdentity.Name 
     Get 
      Return String.Empty 
     End Get 
    End Property 
End Class 

в Global.asax Application_AuthenticateRequest

If Request.Path.ToLower.EndsWith(".jpg") Then 
    Me.Context.User = BlowByAuthenticatedIdentity 
End if 

 Смежные вопросы

  • Нет связанных вопросов^_^