为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 6 不需要电子邮件验证即可进行社交登录

Laravel 6 不需要电子邮件验证即可进行社交登录

PHP
30秒到达战场 2022-06-11 09:25:52
我是laravel的新手。我已经使用 auth 命令创建了登录和注册表单。我已经激活了用于登录的电子邮件验证。此外,我还使用基于以下链接的社交名流为 Gmail、Fb 等创建了社交登录。https://www.tutsmake.com/laravel-6-google-login-tutorial-with-socialite-demo-example/现在,我不需要对那些通过社交登录但手动注册的用户进行电子邮件验证。我的家庭控制器namespace App\Http\Controllers;use Illuminate\Support\Facades\DB;use Illuminate\Http\Request;class HomeController extends Controller{/** * Create a new controller instance. * * @return void */public function __construct(){     $this->middleware(['auth', 'verified']);}/** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */public function index(){    return view('frontend.index');}public function seedr(){    $users=DB::table('users')->get();    return view('backend.seedr',['users'=>$users]);}}我的社交控制器namespace App\Http\Controllers;use Illuminate\Http\Request;use Validator,Redirect,Response,File;use Socialite;use App\User;class SocialController extends Controller{   public function redirect($provider)  {    //echo $provider;die;    return Socialite::driver($provider)->redirect();  }  public function callback($provider) {   $getInfo = Socialite::driver($provider)->user();   $user = $this->createUser($getInfo,$provider);  auth()->login($user);  return redirect()->to('/home'); } function createUser($getInfo,$provider){  $user = User::where('provider_id', $getInfo->id)->first(); if (!$user) {  //$mytime = Carbon::now(); $currenttime=date("Y-m-d h:i:s a", time()); $user = User::create([    'name'     => $getInfo->name,    'email'    => $getInfo->email,    'provider' => $provider,    'provider_id' => $getInfo->id,]); //die;}return $user;}}
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

您可能有一列email_verified_at存储验证电子邮件地址的日期,默认情况下,null这意味着用户未通过验证。在您SocialController@createUser将其设置为当前日期:


 $user = User::create([

    'name'     => $getInfo->name,

    'email'    => $getInfo->email,

    'provider' => $provider,

    'provider_id' => $getInfo->id,

    'email_verified_at' => now()

]);


查看完整回答
反对 回复 2022-06-11
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以使用 markEmailAsVerified()


$user = User::create([

    'name'     => $getInfo->name,

    'email'    => $getInfo->email,

    'provider' => $provider,

    'provider_id' => $getInfo->id,


]);

$user->markEmailAsVerified();


查看完整回答
反对 回复 2022-06-11
?
精慕HU

TA贡献1845条经验 获得超8个赞

不要像@Raftel 提到的那样使用它!当您添加email_verified_at$fillable变量时,黑客可以通过发送隐藏的输入(例如<input type="hidden" name="email_verified_at" value="<?php echo now() ?>"/ >...

您可以在调用的雄辩模型上使用未记录的方法forceFill()https ://www.mike-griffiths.co.uk/blog/laravels-forcefill-and-forcecreate/


查看完整回答
反对 回复 2022-06-11
  • 3 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信