[英]Extending Authentication in Laravel 5.1
我有一個應用程序,類似於托管轉售商得到的東西有所不同...該應用程序用於domainA.com和domainB.com。 兩個域都指向一台服務器,因此兩個站點都運行完全相同的文件和數據庫的單個應用程序。
當用戶訪問domainA.com時,我們會看到domainA的特定首選項,即徽標和配色方案。 同樣適用於domainB.com。
雖然兩個域都使用單個數據庫,但我希望userA能夠使用相同的電子郵件在domainA和domainB上注冊。 當用戶嘗試登錄時,我們將使用類似於以下內容的內容:(摘自http://laravel.com/docs/master/authentication#authenticating-users )
Auth::attempt(['email' => $email, 'password' => $password, 'site' => 'domainA.com'])
這是我需要的功能,用於保持數據分離,因此,如果您以屬於domainA.com的adminA身份登錄,您將看到userA在domainA.com上所做的操作,而adminA將看不到userA在domainB.com上進行的操作。 同樣適用於屬於domainB.com的adminB,adminB無法看到userA在domainA.com上所做的操作。
我想知道如果我要使用類似以下內容來更新默認的AuthController @ create方法,那么Laravel 5隨附的整體身份驗證將受到怎樣的影響:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'site' => 'domainB.com'
]);
}
我認為密碼提醒可以輕松更新,但是由於Laravel的身份驗證包括很多內置功能,因此除非使用身份驗證用戶的標識符來標識用戶並執行核心功能,否則這可能會引起問題。
更新/這是我的位置
我已經完成了以下
domains
表中查找域id。 unique_email_domain_id
( email
, domain_id
) 還創建了一個中間件來創建帶有數據的全局域變量,以下是一個初始示例:
<?php
namespace App\Http\Middleware;
use Closure;
use URL;
class DomainRouter
{
/**
* Handle an incoming request. Setting up domain for given session.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$domain= \App\Domain::where('domain', URL::to('/'))->firstOrFail();
# config('domain')->id
config([
'domain' => $domain
]);
return $next($request);
}
}
必須通過重新創建代碼來重新創建登錄,注冊和忘記密碼,這些代碼主要是從核心控制器復制過來的
站點應該與數據庫無關,因為用戶和域之間的數據庫級別沒有關系。
當用戶訪問domainA.com時,我們會看到domainA的特定首選項,即徽標和配色方案。 同樣適用於domainB.com。
雖然兩個域都使用單個數據庫,但我希望userA能夠使用相同的電子郵件在domainA和domainB上注冊。
相反,您要做的就是顯示不同的信息或在域之間提供不同的功能。
相反,您應該做的只是擴展auth函數/過濾器,當用戶登錄到特定域時,您可以先確定當前路由所在的域,然后再應用數據/視圖/功能
例如:
MyController extends Controller
{
public function view(ViewRepository $view)
{
return $view->make('path.to.my.view')
}
}
}
ViewRepository擴展View的位置,並基於當前路由域覆蓋發送到該視圖的數據。
您可能會非常喜歡並傳入任何域特定的存儲庫文件,該文件將基於兩個域之間的更改充當任何“核心”功能的接口/過濾器。域擴展了您為維護DRY原理而開發的核心類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.