使用Laravel 5.6中的内置Auth系统,我的网站上有多个页面,我需要用户注册或登录才能执行诸如购买等操作。
我将登录重定向到用户登录之前所在的上一页,但似乎无法通过注册来使用。
我要寻找的示例:
这是我的RegisterController.php:
//protected $redirectTo = '/'; (Originally Returning Back To Home)
//WHAT I'M USING NOW TO TRY AND REDIRECT BACK TO PREVIOUS PAGE
protected function redirectTo()
{
return url()->previous();
}
// Guards/Redirects user to home if logged in and tries to access register page again.
public function __construct()
{
$this->middleware('guest');
}
// If users email exists in my transaction database, I show them a Thank you message upon registering. And Still want to redirect them back to previous page.
public function registered($request, $user) {
$where = [
['customer_email', $user->email],
['user_id', null],
];
if (Transaction::where($where)->exists()) {
Transaction::where($where)->update(['user_id' => $user->id]);
return url()->previous()
->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
}
这是我如何与登录控制器一起工作的方法,但不适用于注册控制器。
public function showLoginForm()
{
if (session('link')) {
$myPath = session('link');
$loginPath = url('/login');
$previous = url()->previous();
if ($previous = $loginPath) {
session(['link' => $myPath]);
}else{
session(['link' => $previous]);
}
}
else{
session(['link' => url()->previous()]);
}
return view('auth.login');
}
protected function authenticated(Request $request, $user)
{
return redirect(session('link'));
}
任何帮助,将不胜感激。
好的,因此您可以采用与登录控制器类似的方式进行操作。
首先,您需要在注册控制器中创建以下函数,以覆盖默认值并将URL保存到会话中
/**
* Show the application registration form.
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
if (session('link')) {
$myPath = session('link');
$registerPath = url('/register');
$previous = url()->previous();
if ($previous = $registerPath) {
session(['link' => $myPath]);
}else{
session(['link' => $previous]);
}
} else{
session(['link' => url()->previous()]);
}
return view('auth.register');
}
然后,在注册控制器中再次创建以下功能
protected function redirectTo()
{
return redirect(session('link'))->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
您可能还希望在其中设置默认路由,以防他们直接访问注册表。所以
protected function redirectTo()
{
if(session('link')){
return redirect(session('link'))->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
return redirect('/home')->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句