TL; DR::成功登录并重定向到/home
后,我被Controller的中间件(/login
)踢回了$this->middleware('auth');
。
我有一个php-apache码头工人开发环境。最终,我可以将Laravel 7用于一项新服务,因此我进行了设置,获取了框架并开始使用它。我无法使用Laravel的哈希算法,因为我知道一种可以与manual authentication的Auth::attempt()
方法一起使用的自定义方法。
所有人都在这一点上设置
public function login(Request $r)
{
$data = $r->validate([
'username' => 'required|string',
'_pswrd' => 'required|string',
]);
$credentials = [
'login' => $data['username'],
'password' => $data['_pswrd'],
'status' => 'A',
];
try {
if (Auth::guard()->attempt($credentials, $r->has('remember'))) {
// Auth::user() is found and valid so redirect...
return $r->wantsJson()
? new Response('', 204)
: redirect()->intended('/');
}
return back()->with('errors', new MessageBag([ 'auth.failed' ]));
} catch (Exception $e) {
Log::warning($e);
return back()->with('errors', new MessageBag([ 'auth.unknown' ]));
}
}
但是,然后我去了home
路线
class HomeController extends Controller
{
public function __construct()
{
// \Illuminate\Support\Facades\Auth::user() === null
$this->middleware('auth');
}
public function index()
{
return view('home');
}
}
conf/
文件夹中的某些配置?答案 0 :(得分:1)
这是没有检查显而易见的问题。 Laravel已更改(很多)用户模型,我想稍后再看。必须固定primary_key
和keyType
属性,以便验证中间件正常工作。
我会留下这个答案,因为我在此问题上花费了大量时间,一直认为它与auth或会话配置无关。
答案 1 :(得分:0)
警卫叫什么名字?是web
后卫吗?
因此,尝试填充guard('web')
或直接将其删除Auth::attempt([])