当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.4-注册后自动登录

谭桐
2023-03-14

我正在尝试在用户注册后自动登录。

我的用户注册方法:

public function register_user(Request $request)
{
    if (!$request->ajax()) return false;

    $form_rule = [
        'email'     => 'required|email|max:255|unique:tdshop_user_entity',
        'password'  => 'required|min:6',
    ];

    $validator  = Validator::make($request->all(), $form_rule);
    $status     = $validator->fails();

    $form_errors = [];
    foreach($form_rule as $field=>$rules){
        $form_errors[$field] = $validator->errors()->first($field);
    }

    if(!$validator->fails()){
        $user = User_entity::create([
            'email'     => $request['email'],
            'password'  => bcrypt($request['password']),
        ]);
        Auth::loginUsingId($user->user_id);
    }

    return json_encode([
        'status'    => ($status)? 'fail' : 'success',
        'result'    => json_encode($form_errors)
    ]);
}

我的用户实体模型:

    namespace App;

    //use Illuminate\Database\Eloquent\Model;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Zizaco\Entrust\Traits\EntrustUserTrait;
    use Eloquent;

    class User_entity extends Eloquent
    {
        use Notifiable;
        use EntrustUserTrait;

        protected $table    = 'tdshop_user_entity';
        protected $primaryKey = 'user_id';
        protected $fillable = ['email','password','status'];
        protected $hidden = ['password', 'remember_token'];

        public function Attribute_set()
        {
            return $this->hasOne('App\Attribute_set');   
        }

        public function Attribute_entity()
        {
            return $this->hasMany('App\Attribute_entity');
        } 

        public function User_address_entity()
        {
            return $this->hasMany('App\User_address_entity');
        } 
}

用户注册成功并记录在数据库中。但要登录,将显示以下错误:

SessionGuard中的ErrorException。php第407行:传递给illumb\Auth\SessionGuard::login()的参数1必须是illumb\Contracts\Auth\authenticable的实例,给定的App\User\u实体的实例,在/home/ali/www/brandmashhoor/vendor/laravel/framework/src/illumb/Auth/SessionGuard中调用。第392行的php,已定义

谁能告诉我正确的问题是什么。

共有2个答案

宰父存
2023-03-14

在RegisterController中,您可以在注册后使用以下代码登录。

use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Response;



if ($validator->passes()) {
// Store your user in database
event(new Registered($user = $this->create($request->all())));           
return response(['success' => true,'redirect' => 'dashboard'],    Response::HTTP_OK);
}

而不是返回响应(['success'=

使用下面。

Auth::login($user);
return response(['success' => true,'redirect' => 'dashboard'],     Response::HTTP_OK);
刁远
2023-03-14

您必须扩展User_entity才能使登录起作用。在默认的User模型中,它被别名为有身份验证的

目前,您正在扩展Eloquent,但是可验证的扩展了Illumate\Database\Eloquent\Model,它将为您处理这些问题。

在您的User\u实体中尝试以下操作:

use Illuminate\Foundation\Auth\User as Authenticatable;

class User_entity extends Authenticatable
{
    ....

 类似资料:
  • 问题内容: 我想要在spring成功注册后自动登录:我有一个受保护的页面,需要登录才能访问它们,我要在注册后跳过登录页面并进行自动登录,以便用户可以看到受保护的页面有我吗?我正在使用spring 3.0,spring security 3.0.2,该怎么做? 问题答案: 可以通过以下方式(半伪代码)通过spring安全性完成此操作: 更新:仅包含注册后如何创建会话

  • 我使用的是AWS Cognito的JavaScript SDK(http://docs.AWS.amazon.com/Cognito/latest/developerGuide/using-amazon-cognito-user-identity-pools-javascript-examples.html)。

  • 问题内容: 这是我目前用于注册的内容: 是否可以不要求用户在创建帐户后手动登录,而是简单地自动登录?谢谢。 编辑:我曾尝试过login()函数,但没有成功。我相信问题是未设置AUTHENTICATION_BACKENDS。 问题答案: 使用authenticate()和login()功能:

  • 本文向大家介绍Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册,包括了Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册的使用技巧和注意事项,需要的朋友参考一下 动态验证:(不需要建Model模型) 1.建一个控制器,做表单操作(包含验证) 2.对应控制器方法的html页面: ajax:(不需要建Model模型) 1.建一个控制器,做表单操作(包含验证) 2.

  • 在我的Spring Boot MVC应用程序中,我使用Spring Security提供身份验证和用户注册。用户的身份验证和注册工作正常,但创建用户帐户后,我想自动登录他。当我这么做的时候,我收到了坏消息。此具有相同凭据的用户通常使用登录表单正确登录。谢谢你的帮助。下面是我的代码: 来自控制器的方法 SecurityServiceImpl(方法验证正在抛出异常) UserServiceImpl U

  • 问题内容: 我们正在Symfony 2中从头开始构建一个业务应用程序,我在用户注册流程上遇到了一些麻烦:用户创建帐户后,应该使用这些凭据自动登录。立即被迫再次提供其凭据。 任何人都对此有任何经验,或者能够为我指明正确的方向? 问题答案: Symfony 4.0 此过程尚未从symfony 3更改为4,但是这里是使用新推荐的AbstractController的示例。无论是和服务注册在父方法,所以你