如何获取 Auth::user()->email 之类的数据;用于自定义身份验证 table

How to get data like Auth::user()->email; for custom auth table

所以我已经将默认的 Auth table 表单用户更改为 config\auth 中这样的帐户。php :

'defaults' => [
    'guard' => 'web',
    'passwords' => 'accounts',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'accounts',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'accounts',
        'hash' => false,
    ],
],

'providers' => [
    'accounts' => [
        'driver' => 'eloquent',
        'model' => App\Akun::class,
    ],
],

'passwords' => [
    'accounts' => [
        'provider' => 'accounts',
        'table' => 'password_resets',
        'expire' => 60,
        'throttle' => 60,
    ],
],

当然在Akun模型上我把模型配置改成这样

namespace App;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Akun extends Authenticatable
{
use HasFactory;

protected $table = 'accounts';

protected $fillable = [
    'nip',
    'password',
];

protected $hidden = [
    'password',
    'remember_token',
];
}

我尝试使用我的登录系统登录,它可以正确重定向,这是我的登录功能

 function checklogin(Request $request){
    $this->validate($request,[
        'nip'   => 'required',
        'password'  => 'required'
    ]);
    $akun_data = array(
        'nip' =>  $request->get('nip'),
        'password'  =>  $request->get('password')
    );
    if(Auth::attempt($akun_data)){
        return redirect('login/successlogin');
    }else{
        return back()->with('pesan','NIP atau Password salah');
    }
}

但是我怎样才能得到 'nip' 数据,比如 Auth::user()->name;或类似的东西 。我是 laravel 的新手,我知道如果我使用用户 table 会很容易。但我必须使用此帐户 table 作为默认授权。

因为你没有 email 字段所以你应该通过 auth()->login() 函数使用手动登录所以你的代码将是这样的

function checklogin(Request $request)
{
    $this->validate($request, [
        'nip'   => 'required',
        'password'  => 'required'
    ]);

    $akun = Akun::where('nip', $request->get('nip'))->first();
    if (!$akun) {
        return redirect()->back()->with('error', 'User not found.');
    }

    if (\Hash::check($request->get('password'), $akun->password)) {
        auth()->login($akun);
        return redirect('login/successlogin');
    } else {
        return back()->with('pesan', 'NIP atau Password salah');
    }
}

ref link https://laravel.com/docs/8.x/authentication#other-authentication-methods

我的问题已经解决了。 是的,即使您更改了默认 table 用户,您也可以使用 Auth::user() 获取数据。 但请确保在您的默认 table 用户中,有一个名为 id 和 primary 的列。 并在您的迁移中添加此代码:

$table->id();

您只需键入

即可获取您的数据
Auth::user()->column_name;

并确保您已添加

use Auth;

在控制器的顶部class