所以我的問題是這樣的 - 我有自定義的身份驗證代碼,基於註冊的用戶數據在數據庫中寫入`在線`表ip,會話ID和用戶ID(如果登錄名和密碼匹配)。
Soo我有一些只需要通過身份驗證時才需要的js腳本,如果您未登錄(不是不安全,但爲什麼要放棄操場),我不希望它們可訪問,並且我希望所有腳本都在一個.js文件。
Soo我thoght也許我可以使用.htacces密碼保護的文件夾,當我登錄到管理面板一些PHP代碼讓我也登錄在該appache系統 - 這可能嗎?或者我需要製作js文件php然後包含它或其他東西?我很困惑。通過.htaccess自定義登錄身份驗證
-1
A
回答
1
當然你可以做到這一點!但是有一種更簡單的方法。只需使用一個PHP文件作爲腳本標籤的src
屬性,並設置該文件來處理請求:
<script src="/path/to/js_handler.php"></script>
的PHP文件控制。這是因爲PHP腳本可以告訴用戶是否通過查看$_SESSION
變量登錄:
js_handler.php
<?php
if(session_status()=== PHP_SESSION_NONE) session_start();
$loggedIn = false;
//determine whether the user is logged in by looking at values set
// in $_SESSION by the login script. This is just an example
if(isset($_SESSION['user']) && $_SESSION['expires'] > time())
$loggedIn = true;
//set JS header (otherwise the browser will expect an HTML file)
header('Content-Type: application/javascript');
//now send the right file to the browser
if($loggedIn){
//instruct the browser and proxies to never cache this file. Probably
//better just set short caching (1-2hrs) to reduce server load
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Expires: 0");
readfile('/path/to/private.js');
}
else{
//allow caching and reusing for up to 7 days
header("Cache-Control: max-age=" . 60*60*24*7); //max age allowed: 7 days
header("Expires: ".gmdate('D, d M Y H:i:s', time() + 60*60*24*7).' GMT');
readfile('/path/to/public.js');
}
+0
感謝你的消化,它的工作就像一個魅力,但還有一個問題 - 瀏覽器chache javascript是否包含在這個maner? –
+0
'.php'文件通常不被緩存,但JavaScript文件被緩存,所以我不知道默認會發生什麼。但是,您可以通過設置緩存標題來自行控制它。我編輯了我的答案,告訴你如何讓瀏覽器緩存7天(對於'public.js'),以及如何告訴瀏覽器永遠不要緩存(對於'private.js')。意識到如果你設置'永不緩存',瀏覽器每次打開一個使用腳本的新頁面時都會保持重新加載。這會減慢你的網站,可能會打擾你的用戶。也許短緩存(1-6小時)更好 – BeetleJuice
相關問題
- 1. 自定義身份驗證 - 用戶登錄但未經過身份驗證
- 2. Symfony2自定義身份驗證:用戶已登錄但未通過身份驗證
- 3. 已通過身份驗證的Google+ API自動登錄用戶
- 4. 自定義登錄與表單身份驗證
- 5. Wordpress登錄自定義外部身份驗證
- 6. Django身份驗證(自定義登錄頁面)
- 7. Firebase匿名身份驗證+自定義令牌登錄
- 8. Windows身份驗證自動登錄
- 9. Facebook登錄身份驗證
- 10. Symfony2登錄身份驗證
- 11. 身份驗證登錄
- 12. PHP登錄身份驗證
- 13. NT身份驗證登錄
- 14. 登錄身份驗證
- 15. 登錄身份驗證Asp.net
- 16. Cakephp身份驗證:繞過登錄
- 17. 通過OAuth2將身份驗證重定向到Google登錄頁
- 18. 重定向自定義AuthenticationForm一旦通過身份驗證 - Django
- 19. 自定義身份驗證以形成身份驗證
- 20. Sitecore的身份驗證使用API身份驗證/登錄
- 21. 如何通過自定義httpmodule進行MVC身份驗證
- 22. 使用Auth0通過自定義場景進行身份驗證?
- 23. 我無法使用通用登錄身份驗證身份驗證
- 24. 某人通過什麼登錄身份驗證?
- 25. Symfony2已登錄但未通過身份驗證
- 26. 通過CodeIgniter DX身份驗證登錄Wordpress
- 27. 用戶未通過外部登錄身份驗證
- 28. 如何通過SQL身份驗證添加NETWORK SERVICE登錄?
- 29. Spring安全無法通過LDAP身份驗證登錄
- 30. 通過身份驗證Laravel
這是一個有趣的概念(基於用戶的登錄狀態發送不同的JS的內容) 。 – BeetleJuice