У меня есть приложение, похожее на то, что хостинг-реселлеры получают нечто иное ... это приложение используется на domainA.com и domainB.com. Оба домена указывают на один сервер, поэтому оба сайта запускают одно приложение точно так же, как и файлы, и одну базу данных.Расширение аутентификации в Laravel 5.1
Когда пользователь обращается к 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'])
Это функциональность, которая мне нужна нужна для того, чтобы сохранить данные отдельно, так что если вы входите в систему как adminA, который принадлежит на domainA.com вы увидите, что userA сделал на domainA.com, а adminA не видел, что сделал userA на domainB.com. То же самое относится к adminB, принадлежащему domainB.com, adminB не сможет увидеть, что userA сделал на domainA.com.
Я хотел бы знать о том, как в целом Authentication поставляется с Laravel 5 затронутым, если я должен был обновить по умолчанию AuthController @ создать метод с чем-то похожим на:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'site' => 'domainB.com'
]);
}
Я предполагаю, что напоминания пароля может быть легко модернизированы , а потому, что аутентификация Laravel включает в себя довольно много встроенных функций, это может создать проблему, если после того, как идентификатор пользователя для идентификации никогда используется для идентификации пользователя и выполнять основные функции
Update/это я где я нахожусь в
я сделал следующие
- Удалить уникальные условия в БД для электронной почты пользователей таблицы
- Изменено логина и зарегистрировать страницу, чтобы включить дополнительные пары «домен»
- Добавлен новый столбец «domain» в таблице пользователей - теперь пользователи принадлежат к доменам
- Промежуточное программное обеспечение должно быть создано для определения идентификатора домена от
domains
таблицы на начальном доступе к сайту. - в таблице пользователей должны иметь электронную почту и Domain_ID установлен уникальный для предотвращения дублирования: UNIQUE INDEX
unique_email_domain_id
(email
,domain_id
) - проверки на регистр страницы должны быть обновлены для электронной почты в функции валидатор и заменить что-то похожее на " уникальные: пользователи, электронная почта, NULL, идентификатор, Domain_ID, 1'
также создал промежуточное программное обеспечение для создания глобального переменного домена с данными, ниже первоначальный пример:
<?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);
}
}
Пришлось воссоздать логин, зарегистрировать и забыли пароль, воссоздав код, главным образом скопированный с основных контроллеров
Спасибо за ответ. Что бы вы сделали в отношении паролей, как я понимаю в вашем примере, если пользователь меняет пароль, эти данные будут обновляться на всех сайтах, потому что у нас есть одна таблица пользователей. Я не хочу, чтобы пользователь видел какие-либо связи между доменами в системе. – user3402600
Если вы хотите иметь отдельные пароли, это будет другой случай. Каждый пользователь будет рассматриваться как отдельные объекты, и вы можете игнорировать мой ответ? – ajameswolf