我想創建身份驗證機制而不需要數據庫,其中只有一個知道正確用戶名和密碼(我將硬編碼)的人(admin)能夠登錄。我仍然想使用Auth :: attempt(),Auth :: check()等功能。Laravel 4 - 硬編碼身份驗證
我發現我可以創建自己的User driver,但在我看來應該有一些更簡單的東西。
也許這不是很好的解決方案,但我希望儘可能簡單的網站。
我想創建身份驗證機制而不需要數據庫,其中只有一個知道正確用戶名和密碼(我將硬編碼)的人(admin)能夠登錄。我仍然想使用Auth :: attempt(),Auth :: check()等功能。Laravel 4 - 硬編碼身份驗證
我發現我可以創建自己的User driver,但在我看來應該有一些更簡單的東西。
也許這不是很好的解決方案,但我希望儘可能簡單的網站。
它似乎只應該有一些簡單的事情,但事實上,如果你想擴展認證系統,就可以簡單得多。您通過Auth
外觀(如attempt
,check
等)使用的所有方法均在Illuminate\Auth\Guard
類中實施。這個類需要將UserProviderInterface
實現注入到構造函數中才能工作。這意味着要使用Auth
外觀,您需要使用已實施的DatabaseUserProvider
或EloquentUserProvider
,或者實施自己的提供者來處理您想要的簡單登錄。
雖然您鏈接的文章可能看起來很冗長,但爲了實現您的需要,您可能會在提供程序中使用的代碼少得多,而不是您想象的那樣。這是我想什麼是你需要的東西:
1.在你app/config/auth.php
改變司機simple
並添加所需的登錄憑據:
'driver' => 'simple',
'credentials' => array(
'email' => '[email protected]',
'password' => 'yourpassword'
)
2.創建一個文件在您app
目錄所謂SimpleUserProvider.php
具有此代碼:
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\GenericUser;
use Illuminate\Auth\UserProviderInterface;
class SimpleUserProvider implements UserProviderInterface {
protected $user;
public function __construct(array $credentials)
{
$this->user = new GenericUser(array_merge($credentials, array('id' => null)));
}
// If you only need to login via credentials the following 3 methods
// don't need to be implemented, they just need to be defined
public function retrieveById($identifier) { }
public function retrieveByToken($identifier, $token) { }
public function updateRememberToken(UserInterface $user, $token) { }
public function retrieveByCredentials(array $credentials)
{
return $this->user;
}
public function validateCredentials(UserInterface $user, array $credentials)
{
return $credentials['email'] == $user->email && $credentials['password'] == $user->password;
}
}
3。最後,您需要向認證系統註冊新的提供商。你可以把這段app/start/global.php
文件:
Auth::extend('simple', function($app)
{
return new SimpleUserProvider($app['config']['auth.credentials']);
});
這應該給你一個簡單的(沒有數據庫)用戶身份驗證,同時仍然能夠使用Laravel的門面。
儘可能簡單意味着您可以簡單地擴展'attempt'和'check'方法並實現一個簡單的比較器函數,該函數只檢查用戶+密碼正確組合的請求輸入。 –