在laravel

时间:2016-12-06 00:04:03

标签: laravel-5.2

当用户登录时,我希望将其重定向到他们的个人资料页面而不是主页。我在另一个获取用户配置文件的控制器中有一个方法。不确定我需要做什么,因为用户配置文件采用用户名变量但是当用户登录时我只询问电子邮件和密码。

我的路由文件,但以下方法与身份验证控制器位于不同的控制器中。

Route::get('/user/{username}', [
    'uses' => 'ProfileController@getProfile',
    'as' => 'profile.index',
    'middleware' => ['auth'],
    ]);

我的以下方法在我的身份验证控制器中。

public function postSignin(Request $request)
{
    $this->validate($request, [
        'email' => 'required',
        'password' => 'required',

        ]);

    if (!Auth::attempt($request->only(['email', 'password']),      $request->has('remember'))) {
        return redirect()->back()->with('info' , 'Could not sign you in with that info.');
    }

        $user= User::where('username', $username)->first();
        return redirect()->route('profile.index')
        ->with('info', 'You are now signed in.')
        ->with('user', $user);
     }

以下是我的个人资料控制器..

public function getProfile($username)
{
    $user= User::where('username', $username)->first();

    if (!$user){
        abort(404);
    }
    return view('profile.index')
        ->with('user', $user);
}

3 个答案:

答案 0 :(得分:0)

要正确构建路线,您需要在此处传递用户名:

$user = User::where('username', $username)->first();
    return redirect()->route('profile.index', ['username' => $user->username])
    ->with('info', 'You are now signed in.')
    ->with('user', $user);

答案 1 :(得分:0)

从提供的电子邮件中获取用户名,并将$username变量传递给路由:

public function postSignin(Request $request)
{ 
      if (!Auth::attempt($request->only(['email', 'password']),$request->has('remember'))) 
      {
           return redirect()->back()->with('info' , 'Could not sign you in with that info.');
      }

   $username=User::where(['email'=>$request->email])->first()->username;
   return redirect()->route('profile.index')->with('username', $username);
}

答案 2 :(得分:0)

您可以按照以下方式使用。

  if (!Auth::attempt($request->only(['email', 'password']),      $request->has('remember'))) {
    return redirect('profile.index')->with('info' , 'Could not sign you in with that info.');