[英]Redirect to login page after a user is registered. laravel 5.5
在用戶在我的Web應用程序上注冊並顯示消息“我們已在“用戶電子郵件”上向您發送了鏈接。請檢查您的電子郵件以完成注冊”后,如何重定向到登錄頁面。 通過使用laravel 5.5版本
注意:我已經使用laravel 5.5的Auth procress完成了登錄和注冊。
RegisterController
namespace App\Http\Controllers\Auth;
use App\Events\UserReferred;
use App\Profile;
use App\Reflink;
use App\Http\Controllers\Controller;
use App\Settings;
use App\User;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/verify/logout';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
$settings = Settings::first();
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'admin'=>0,
'active'=>0,
'membership_id'=>1,
'membership_started'=>date('Y-m-d'),
'membership_expired'=>'2020-12-31',
'token'=>str_random(25),
]);
Profile::create([
'user_id'=>$user->id,
'avatar'=>'uploads/avatars/default.jpg',
'main_balance'=>$settings->signup_bonus,
]);
Reflink::create([
'user_id'=> $user->id,
'link'=> str_random(4).$user->id.str_random(4),
]);
$user->sendVerificationEmail();
event(new UserReferred(request()->cookie('ref'), $user));
session()->flash('message', 'Dear user your account create successful but not active. To active your account please check your email for verify code.');
Session::flash('type', 'warning');
Session::flash('title', 'Email Verify Required');
return $user;
}
}
用戶成功注冊后,將觸發已Registered
事件。 因此,在您的RegisterController
您可以覆蓋已registered
方法並從此處注銷用戶:
protected function registered( Request $request, $user )
{
Auth::logout(); // don't forget to import the facade at the top of the class use Auth;
}
但是更好的方法是使用verified
中間件,因為您正在使用Laravel的驗證選項。
因此,將您的受保護路線圍成一個組:
Route::middleware([ 'auth', 'verified' ])->group(function () {
// your routes here.
});
因此,即使用戶在注冊后直接登錄,他也無法訪問任何路由,除非他驗證電子郵件。
我建議您在使用Laravel 5.X時應該考慮升級到5.7,因為它帶有內置的電子郵件驗證系統,如此處所示,並且具有保護路由的中間件功能( middleware('verified');
),事件,視圖和驗證后重定向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.