我有一个表单,用户可以随时输入他的电子邮件。因此,我用它来即时创建他的帐户。创建成功,我将api路由与POST一起使用,并将behinf与控制器一起使用,我先使用User :: create([...]),然后再使用Auth :: login($ user)...一切都很好从API脚本的角度来看,用户已连接。
但是从表单页面的角度来看,如果用户更改或刷新页面,则不会建立联系。我认为这是出于安全原因,但是我该怎么做呢?我是Laravel的新手,我只想找到正确的“ laravel”方式。
谢谢。
编辑:
在路由文件中:
Route::post('/user', 'UserController@receiveData');
在控制器文件中:
class UserController extends Controller
{
public function receiveData (Request $request)
{
$response = new ServerResponse('User');
switch ( $action = $request->input('action') )
{
case 'create_user_from_email' :
/*if ( Auth::check() )
{
echo '(Connected, email:'.Auth::user()->email.')';
}
else
{
echo '(Not connected)';
}*/
if ( $email = $request->input('email') )
{
$errorToken = null;
if ( $user = User::createFromEmail($email, $errorToken) )
{
/* Données optionnelles */
$profileData = $request->input('profile') ? json_decode($request->input('profile'), true) : null;
$addressData = $request->input('address') ? json_decode($request->input('address'), true) : null;
/* Création du profile, de l'adresse et du compte en banque par défaut. */
$profile = $user->profile($profileData);
$address = $profile->primaryAddress($addressData);
$bankAccount = $user->primaryBankAccount();
/* Auto-connexion. */
Auth::login($user, true);
if ( Auth::check() )
{
$response->setStatus(0, 'New User created.');
$response->addData('user_id', $user->id);
$response->addData('profile_id', $profile->id);
$response->addData('address_id', $address->id);
$response->addData('bank_account_id', $bankAccount->id);
}
else
{
$response->setStatus(4, 'Unable to connect the new User !');
$response->addData('error', 'user_not_connected');
}
}
else
{
$response->setStatus(3, 'Unable to create a new User ! See "error" key.');
$response->addData('error', $errorToken);
}
}
else
{
$response->setStatus(2, 'There is email address !');
}
break;
default:
$response->setStatus(1, 'Action "'.$action.'" unhandled !');
break;
}
return $response->get();
}
}