Ben bir lamba kurulum var ve sadece kullanıcılar giriş erişebilirsiniz böylece ben sadece web sayfası (resim, css, video, vb) içeriği korumak için mümkün olmak istiyorum.
Ben. Htaccess ile kolayca yapabilirsiniz biliyoruz. Ancak kimlik doğrulama açılan kullanmak istemiyorum, ve ben oturumları kullanmak ve aynı zamanda çıkış edebilmek için güçlü olmak istiyorum.
Ben mysql ile kimlik doğrulama işi yapmak ve oturumları oluşturmak için php kullanıyorum. Bu harika çalışıyor. Ancak görüntüler, css, javascript vb hala erişilebilir.
How do I allow access to the content only if a valid php session exists?
Ben (auth.php gibi? File = ...) bir php dosyalara iletmek ve orada kontrol oturumu yapılacak mod_rewrite kullanarak rastlamak var. Bu zaten kontrol edilmiş bir sayfa her bir görüntü için oturumu kontrol etmek için verimsiz görünmektedir. Bu kesmek gibi görünüyor ve ben bunu yapmanın temizleyici bir yolu vardır düşünmeye devam.
Setleri dizin için tüm izin ver böylece bir oturum anahtarı ile bir çerez benim oturum veritabanında ve eğer varsa kontrol edebilir mod_session_cookie gibi apache için bir mod var mı?
Alternatif olarak, bu mod_auth_mysql kullanmak değil, aynı zamanda bir php formu değil doğrulama açılır kullanarak oturumlarını ve giriş kullanmak mümkün olacak mümkün mü?
EDIT:
Here is my solution to the problem:
Benim apache yapılandırma dosyası (. Değil htaccess) Ben ekledi:
RewriteLock /var/www/lib/rewrite.lock
<VirtualHost>
#...
RewriteEngine on
RewriteMap sessionValid prg:/var/www/lib/allow.php
<Directory /var/www/client/*>
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !client-cookie=([^;]+)
RewriteRule .* - [L,R=403]
RewriteCond %{HTTP_COOKIE} client-cookie=([^;]+)
RewriteCond ${sessionValid:%1} !valid
RewriteRule .* - [L,R=403]
</Directory>
</VirtualHost>
Ve komut allow.php:
#!/usr/bin/php5
<?php
set_time_limit(0);
echo "";
$stdin = fopen("php://stdin","r");
$db = mysql_connect(...);
mysql_select_db(..., $db);
$querypre = "SELECT ID FROM Sessions WHERE ID='";
while (1) {
$line = trim(fgets($stdin));
$query = $querypre.mysql_real_escape_string($line)."'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0)
echo("valid\n");
else
echo("0\n");
}
mysql_close($db);
?>
Bu bir cazibe gibi çalışır. Bu Kullanma ve session_set_save_handler Ben php sayfaları ve tüm içeriğin hem güvenli mysql destekli php oturumları kullanmayı başardı. Birisi bu yararlı bulur umuyoruz.
Bazı uyarılar:
- RewriteMap deyimi bu sanal konağın içinde kullanmak için gidiyoruz eğer sanal konak blok içinde tanımlanmış olması gerekir. Bloğun dışına yerleştirilmesi çalışmaz.
- Sen RewriteMap tanımlamadan önce üzerinde RewriteRule ayarlanmış olmalıdır veya göz ardı edilecek.
- RewriteLock sanal konak blokta olamaz.
- Herhangi bir kabuk gibi, php dosya apache kullanıcı ve ^ M geçersiz hale tarafından çalıştırılabilir olmalıdır
- RewriteMap ifadeler. Htaccess ama harita kutu kullanın, diğer tablolarda yer olamaz.