gpt4 book ai didi

laravel - Laravel Auth::attempt() 可以处理关系吗?

转载 作者:行者123 更新时间:2023-12-01 01:56:03 30 4
gpt4 key购买 nike

我正在使用 entrust用于在 Laravel 5.3 中管理基于角色的权限,并自然地为不同的用户类型使用手动/自定义登录。 Auth::attempt()可以吗?处理外表关系?基本上,我想做这样的事情:

if(Auth::attempt(['email' => $request->email, 'password' => $request->password, hasRole('teacher') => true])) {
return redirect()->intended('teacher/dashboard');
}

但我不断收到 hasRole() 的错误是一个未定义的函数。我已收录 use Zizaco\Entrust\Traits\EntrustUserTrait;use EntrustUserTrait; ,我认为这可以让我访问该功能,但显然不是。

我很感激 hasRole()是用户对象的方法,在检查时我没有用户对象,但尝试成功后我无法进行角色检查,因为用户已经登录,如果角色错误我需要注销他们,因为他们的凭据是正确的,但不是为了角色;这看起来很慢而且不实用。

我应该如何处理这个问题?是否有替代 Auth::attempt 的替代方案?我可以使用它不会登录用户,而是使用指定的输入检查用户是否存在,然后运行角色检查,然后使用另一个函数启动经过身份验证的 session ?

如果有用,我的 LoginController 在这里:
<?php

namespace App\Http\Controllers\Teacher;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Validator;
use Zizaco\Entrust\Traits\EntrustUserTrait;

class LoginController extends Controller {
use EntrustUserTrait;

public function showLoginForm() {
return view('teacher/login');
}

public function authenticate(Request $request) {
Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required',
])->validate();

if(Auth::attempt(['email' => $request->email, 'password' => $request->password, hasRole('teacher') => true])) {
return redirect()->intended('teacher/dashboard');
}

return redirect('admin/login')->with('invalid', 'Invalid username or password');
}
}

任何帮助或指导将不胜感激。谢谢。

最佳答案

你可以做的是:

 if(Auth::attempt(['email' => $request->email, 'password' => $request->password)) {
if($user = Auth::user()->hasRole('teacher')) {
return redirect()->intended('teacher/dashboard');
} else {
return redirect()->intended('teacher/dashboard');
}
}

关于laravel - Laravel Auth::attempt() 可以处理关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444012/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com