根据值Laravel登录用户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据值Laravel登录用户相关的知识,希望对你有一定的参考价值。

我正在通过电子邮件验证用户的帐户,我想在帐户验证后将用户直接重定向到主页。

我遇到的问题是我不确定如何使用login函数实际登录用户。

class VerificationController extends Controller {

    public function verify($token){ 

        User::where('email_token',$token)->firstOrFail()->verified();
        // auth()->login($user); works if $user exists
        return redirect('/home');
    }
}   

我可以根据email_token登录用户吗?我试过但它似乎没有按预期工作。

答案

你是正确的方式。你只需要获得User实例并将其传递给login类的Auth方法。我已经为你做了一个示例控制器来展示如何做到这一点。

class VerificationController extends Controller 
{
    public function verify($token)
    {
        // Fetch the user by the email token from the database.
        // #firstOrFail returns the first matching user or aborts 
        // the request with a 404 error.
        $user = User::where('email_token', $token)->firstOrFail();

        // Activate your user or whatever this method does.
        $user->verified();

        // Logs the Client who did this web request into the
        // User account fetched above in.
        Auth::login($user);

        // Redirect to wherever you want.
        return redirect('/home');
    }
}

阅读有关在官方文档中验证用户身份的更多信息: https://laravel.com/docs/authentication#other-authentication-methods

另一答案

首先,您必须在config / auth.php中的providers部分中配置登录模型

在登录模型中也必须进行一些更改

<?php

namespace App;

use IlluminateDatabaseEloquentModel;
use IlluminateAuthAuthenticatable;

class ModelName extends Model implements IlluminateContractsAuthAuthenticatable
{
    use Authenticatable;
}

并在你的控制器

if (!Auth::attempt(['username' => $username, 'password' => $password])) {
            return redirect()->back()->with(['error' => 'Could Not Log You In!']);
   } else {
        return redirect()->route('routeName');
   }

或者您是否要求从控制器手动验证用户,这也是解决方案

Auth::login($user);

其中$ user是相应用户的登录模型记录

以上是关于根据值Laravel登录用户的主要内容,如果未能解决你的问题,请参考以下文章

根据用户的角色和状态登录laravel

Laravel如何根据用户模型上的额外标志来防止用户登录?

Laravel - 如何根据员工和登录用户获取公司详细信息

Laravel 4 - 根据用户数据库中的值显示不同的视图

laravel 5根据用户的角色在登录后重定向用户

数据值检索与数据库中的不同 - Laravel