繁体   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