2011-10-05 12 views
36

Dlatego chcę ograniczyć dostęp do adresu URL. Teraz, jeśli pochodzą z danego adresu IP, nie powinny być monitowane o podanie hasła. Jeśli nie pochodzą z adresu IP użytkownika, powinien on zostać poproszony o podanie hasła.htaccess - użycie hasła LUB białej listy jako białej listy

więc albo albo:

AuthUserFile /some/path/.htpasswd 
AuthName "Please Log In" 
AuthType Basic 
require valid-user 

oraz:

order deny,allow 

deny from all 
allow from x.x.x.x 

Odpowiedz

60

Można użyć dyrektywy Apache "Satisfy".

Oto przykład użycia go:

AuthType Basic 
AuthName "Please Log In" 
AuthUserFile /some/path/.htpasswd 
Require valid-user 
Order deny,allow 
Deny from all 
Allow from 127.0.0.1 
Satisfy any 

dostęp bez hasła jest dozwolone wyłącznie z 127.0.0.1.

Mam nadzieję, że to pomoże.

+0

+1 to jest dokładnie to, co robię. Co więcej, jeśli chcesz wyłączyć sprawdzanie w jakimś katalogu (np. Niektóre publiczne /), po prostu umieść w katalogu '.htaccess': – pwes

+0

' Zezwalaj od wszystkiego' i 'Satisfy any' – pwes

+0

@ Bob: Czy to działa? – FbnFgc

4

z Apache 2.4 Satisfy jest nadal dostępna, ale deprecated

Note

dyrektyw przewidzianych przez mod_access_compat została zaniechana przez mod_authz_host. Mieszanie starych dyrektyw, takich jak Zamówienie, Zezwalaj lub Odmów z nowymi, takimi jak Wymagaj, jest technicznie możliwe, ale odradza się. Ten moduł został utworzony w celu obsługi konfiguracji zawierających tylko stare dyrektywy, aby ułatwić aktualizację 2.4. Więcej informacji można znaleźć w przewodniku aktualizacji.


W twoim przypadku Allow from 1.2.3.4 zastępuje Require ip 1.2.3.4

Łączenie kilku Require s (jak Require valid-user i Require ip) mogą być wykonywane przez Authorization Containers. Mówiąc, że klient musi albo podać hasło, albo pochodzić z określonego adresu IP, zostanie wykonane przez otoczenie dyrektyw za pomocą RequireAny, np.

<RequireAny> 
    Require valid-user 
    Require ip 1.2.3.4 
</RequireAny> 

Mimo, że jest to szczególny przypadek opisany pod koniec Require

Gdy wiele wymagające dyrektywy są stosowane w jednej sekcji konfiguracji i nie są zawarte w innej dyrektywy autoryzacji jak <RequireAll>, są one domyślnie zawarte w dyrektywie <RequireAny>. W ten sposób pierwszy autoryzujący użytkownika autoryzuje całe żądanie, a kolejne dyrektywy Require są ignorowane.

Innymi słowy, RequireAny jest opcjonalny tutaj, i można po prostu wymienić

Require valid-user 
Require ip 1.2.3.4 
Powiązane problemy