如何获取 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
所以我已经将默认的 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