繁体   English   中英

如何在 Laravel 5.0 中使用 Auth::attempt 无密码登录?

[英]How to login without password using Auth::attempt in Laravel 5.0?

我正在使用 Laravel 5.0。 我只想使用用户名(无密码)登录,因为我使用单点登录访问我的 Laravel 项目,所以如果用户成功登录单点登录,它将检查我的数据库是否登录用户的用户名注册与否。
我整天都在寻找这个,但我仍然找到了线索。

我有一个错误:

传递给 Illuminate\Auth\Guard::login() 的参数 1 必须实现接口 Illuminate\Contracts\Auth\Authenticatable,给出 null

如果我在我的 LoginController 中使用下面的代码:

$user = User::where('USER_NAME', '=', $_GET['UserName'])->first();
if(Auth::login($user)->USER_ID == $_GET['UserName']){
   return redirect('Home');
}

如果我在我的 LoginController 中使用下面的代码:

if(Auth::attempt(['USER_ID' => $_GET['UserName']])){
   return redirect('Home');
}

我有一个错误:

未定义索引:密码

根据文件:

将通过电子邮件列的值检索用户。 如果找到用户,则将存储在数据库中的散列密码与通过阵列传递给方法的散列密码值进行比较。

因此,必须在此方法中检查密码,因此它是必需参数。

您可以登录如下:

$user = User::where('USER_NAME', '=', $_GET['UserName'])->first();

if (empty($user)) {
    abort(404);
}

if(Auth::loginUsingId($user->id)){
    return redirect('Home');
}

您只能通过电子邮件手动验证用户。 像这样:

  public function authenticate(Request $request)
     {
               $email=$request->get('email');
               if (Auth::attempt(['email' => $email))
                {     
                    return redirect()->intended('/');   
                }
                else 
                {
                    return redirect('/login');
                }

    }

你可以这样试试

public function login(Request $request) {    
  $email = $request->email;    
  $user = User::where('email', $email)->first();    
  if ($user) {    
    Auth::login($user);    
    return redirect()->route('dashboard');    
  }
  else {    
    return redirect()->back();    
  }    
}

希望它有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM