簡體   English   中英

注冊后重定向laravel

[英]Redirect after registration laravel

我正在使用標准的laravel注冊和登錄頁面。 我試圖弄清楚如何在用戶注冊后添加重定向。 在我的AuthController下,我發現可以執行以下操作:

protected $redirectPath = '/interest';

但是,這也會在我的用戶登錄時將其重定向到此處。 我只想在用戶注冊帳戶后擁有它。 我怎樣才能做到這一點?

我假設您使用的是AuthenticatesAndRegistersUsers特征或AuthenticatesUsersRegistersUsers特征。 那就是您會得到這種行為的情況之一。

用戶被重定向到/ interest的原因是,身份驗證和注冊過程都使用相同的redirectPath()方法來確定應將用戶重定向到的URL,並使用控制器的$ redirectPath屬性。

一種選擇是覆蓋redirectPath()方法並返回不同的路徑,這取決於用戶是否經過身份驗證(登錄后)或(注冊之后)。 不幸的是,由於Laravel的注冊過程會自動對新注冊的用戶進行身份驗證, 因此無法滿足這些特征。

解決此問題的最簡單方法是將注冊和身份驗證分為兩個單獨的控制器。 它們每個都有自己的$ redirectPath屬性。

AuthController正在使用AuthenticatesAndRegistersUsers特征,由於它是特征,因此您可以覆蓋方法,以便可以將postRegister放在AuthController中,並在需要的地方重定向,類似這樣。

/**
 * Handle a registration request for the application.
 *
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Http\Response
 */
public function postRegister(Request $request)
{
    $validator = $this->validator($request->all());

    if ($validator->fails()) {
        $this->throwValidationException(
            $request, $validator
        );
    }

    Auth::login($this->create($request->all()));

    return redirect()->route('name_of_the_route');
}

這將對您的新用戶進行身份驗證,並將其重定向到您指定的路由,並且僅影響注冊而不是身份驗證,如果您不想對新用戶進行身份驗證,則可以更改Auth::login($this->create($request->all())); $this->create($request->all());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM