我使用LaraShift将我的Laravel 4.2应用程序升级到5.0。 LaraShift将我带到了大约一半的位置,我花了10个小时来获取剩余50%的90%以上。我完全卡住的地方是登录名。 Laravel正在对用户进行身份验证,但随后立即重定向回登录页面。这是我的sessionController的顶部:
<?php
namespace App\Http\Controllers;
use App\Services\Custom\proxyPermissions;
use App\Http\Requests\Request;
use App\Services\Custom\sendEmail;
use App\Site;
use App\User;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Validator;
class SessionsController extends Controller
{
public function index()
{
if (Auth::check()) {
return redirect('/');
}
return view('sessions.login');
}
public function loginPost()
{
if ($t = Auth::attempt(Input::only('email', 'password'), Input::only('remember'))) {
$u = Auth::user();
if (Auth::user()->role == 'admin') {
$user = User::whereId(Auth::user()->id)->with('sites')->first();
if (isset($user->sites[0])) {
Site::store2Session($user->sites[0]->id);
} else {
Site::store2Session(1);
}
}
if (Auth::user()->role == 'admin') {
return Redirect::home();
} else {
// User is not an admin
/* After user logs in, control comes here, but user is redirected back to the login page
instead of to the intended URL or /
*/
return Redirect::intended('/');
//return Redirect::intended();
//return Redirect::intended('/')->with('flash_notice','Welcome back!');
}
}
return Redirect::back()->with('flash_error', 'Login Failed')->withInput();
}
除了顶部的名称空间和use语句外,这与我在4.2中编写的代码相同。该应用程序将转到此行:
return Redirect::intended('/');
在底部,然后重定向到/ login
密码重置功能正常工作。输入正确的用户名和密码时,用户正在验证。我有一个包含ID,电子邮件,密码的标准用户模型。
有什么想法吗?
答案 0 :(得分:0)
因此,我不知道应用程序流是如何从Laravel 4.2更改为5.0的,但是我确实找到了错误的根源。在4.2中,用户登录后,在重定向之后,其权限被写入会话。在Laravel 5.0中并没有发生(顺序相同)。
我找到了以前的开发人员输入的这段代码:
// @TODO <name redacted>: TEMPORARY FIX, until all session replaced with links to get site data
if (empty($site)) {
// if no session data, redirect user to login
\Auth::logout();
return redirect('/');
}