簡體   English   中英

Laravel 5.2-創建帖子后登錄用戶

[英]Laravel 5.2 - Login user after create post

我正在做一個項目,所有用戶都可以創建一個帖子並將其發布! 如果用戶未登錄,則啟用帶有電子郵件和密碼的部分來創建帳戶和發布。

在此處輸入圖片說明

我想做:

  1. 創建用戶
  2. 在會話身份驗證中登錄用戶(這是我的問題,我該怎么辦?)
  3. 創建帖子(最后一點,因為我需要user_id)

控制器

// if user NOT registered my form will enable email and password field -- 
            if(!null($request->input('email') && request->input('password'))) {
                // create user

                $user = new User();
                $user->name = $request->input('name');
                $user->email = $request->input('email');
                $user->password = bcrypt($request->input('name'));
                $user->save();

                // login user after create user

                HOW CAN I LOG USER AFTER CREATED ACCOUNT ???

                Thank you for your help!

                // Get ID of user created

                $get_user_id = User::where('email', '=', $request('email'))->first();

                // create post

                $post = new Post();
                $post->title = $request->input('title'); 
                $post->slug = str_slug($request->input('title'),'-'); 
                $post->country = $request->input('country'); 
                $post->zone = $request->input('zone');
                $post->phone = $request->input('phone');
                $post->address = $request->input('address');
                $post->user_id = $get_user_id->id; 
                $post->save(); 
                return redirect('/')->with('message-success', 'Post creato con successo!');

            // IF USER LOGGED

            }else{
                $post = new Post();
                $post->title = $request->input('title'); 
                $post->slug = str_slug($request->input('title'),'-'); 
                $post->country = $request->input('country'); 
                $post->zone = $request->input('zone');
                $post->phone = $request->input('phone');
                $post->address = $request->input('address');
                $post->user_id = $request->input('user_id'); 
                $post->save(); 
                return redirect('/')->with('message-success', 'Post creato con successo!');
            }

答案是:

Auth::login($user);

查看文檔。

不清楚您要在這里做什么,獲取用戶ID的方式不安全。 我建議您使用$ user = Auth :: user(); 而是獲取用戶ID($ user-> id)。

檢查登錄手動使用

if (Auth::attempt(['email' => $email, 'password' => $password])) {}

所以在您的示例中,我將執行以下操作:

    if (!Auth::attempt(['email' => $email, 'password' => $password])) {
       // create User
    } else {
       // $userId = Auth::user()->id;
    }

    // finally create post

將__construct()方法添加到您的類中,並添加以下代碼:

public function __construct() {
    $this->middleware('auth', ['except' => ['index', 'show']]);
}

它必須真正起作用

暫無
暫無

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

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