用户身份验证未在 Laravel 包中持续存在
User Auth not persisting within Laravel package
这是我第一次尝试 laravel 包,运行 遇到了一个问题,其中 Auth::attempt($credentials) 在我的登录控制器中工作,但在重定向到受保护的路由或控制器,用户不再经过身份验证。下面是我的登录控制器方法,其中重定向到仪表板已被注释掉。
public function attempt(Request $request){
$email = strtolower(strip_tags(htmlspecialchars($request->input('email'))));
$password = strip_tags(htmlspecialchars($request->input('password')));
if (Auth::attempt(array('email' => $email, 'password' => $password)))
{
// Redirect to dashboard route
//return redirect()->intended('/admin');
if(Auth::check())
print_r(Auth::user());
}
}
对有效凭据的响应会打印出正确的用户记录,并且 Auth::check returns 为真。但是,当重定向到管理控制器时,用户未通过身份验证。下面是应该输出经过身份验证的用户的管理控制器方法,但只有 returns "not logged".
public function index()
{
if(Auth::check()) print_r(Auth::user());
else echo "not logged";
}
两个controller都使用Auth;,命名空间与vendor/package/pathToDir一致,db设置正确,加密key设置。关于出了什么问题的任何想法?谢谢
该方法尝试的默认行为是不让用户保持登录状态。
您应该将其更改为:
if (Auth::attempt(array('email' => $email, 'password' => $password), false, true))
这样,您将 remember
设置为 false,将 login
设置为 true。
在这里查看更多相关信息:https://laravel.com/docs/5.2/authentication
原来问题出在新的网络中间件上,将我所有需要会话数据的路由移到了路由组中,一切正常。
Route::group(['middleware' => ['web']], function () {
Route::get("/login", ['uses'=>'SiteLogin@index']);
Route::post("/login", ['uses'=>'SiteLogin@attempt']);
Route::get("/logout", ['uses'=>'SiteLogin@logout']);
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {
Route::get('/', ['uses'=>'Admin@index']);
});
});
这是我第一次尝试 laravel 包,运行 遇到了一个问题,其中 Auth::attempt($credentials) 在我的登录控制器中工作,但在重定向到受保护的路由或控制器,用户不再经过身份验证。下面是我的登录控制器方法,其中重定向到仪表板已被注释掉。
public function attempt(Request $request){
$email = strtolower(strip_tags(htmlspecialchars($request->input('email'))));
$password = strip_tags(htmlspecialchars($request->input('password')));
if (Auth::attempt(array('email' => $email, 'password' => $password)))
{
// Redirect to dashboard route
//return redirect()->intended('/admin');
if(Auth::check())
print_r(Auth::user());
}
}
对有效凭据的响应会打印出正确的用户记录,并且 Auth::check returns 为真。但是,当重定向到管理控制器时,用户未通过身份验证。下面是应该输出经过身份验证的用户的管理控制器方法,但只有 returns "not logged".
public function index()
{
if(Auth::check()) print_r(Auth::user());
else echo "not logged";
}
两个controller都使用Auth;,命名空间与vendor/package/pathToDir一致,db设置正确,加密key设置。关于出了什么问题的任何想法?谢谢
该方法尝试的默认行为是不让用户保持登录状态。
您应该将其更改为:
if (Auth::attempt(array('email' => $email, 'password' => $password), false, true))
这样,您将 remember
设置为 false,将 login
设置为 true。
在这里查看更多相关信息:https://laravel.com/docs/5.2/authentication
原来问题出在新的网络中间件上,将我所有需要会话数据的路由移到了路由组中,一切正常。
Route::group(['middleware' => ['web']], function () {
Route::get("/login", ['uses'=>'SiteLogin@index']);
Route::post("/login", ['uses'=>'SiteLogin@attempt']);
Route::get("/logout", ['uses'=>'SiteLogin@logout']);
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {
Route::get('/', ['uses'=>'Admin@index']);
});
});