默认情况下,如果我没有登录,我尝试在浏览器中访问它:
http://localhost:8000/home
它将我重定向到http://localhost:8000/auth/login
如何更改以将我重定向到http://localhost:8000/login
答案 0 :(得分:40)
我想在Laravel 5.5中做同样的事情。处理身份验证已移至Illuminate\Auth\Middleware\Authenticate
,这会引发Illuminate\Auth\AuthenticationException
。
该异常在Illuminate\Foundation\Exceptions\Hander.php
处理,但您不想更改原始供应商文件,因此您可以使用自己的项目文件将其添加到App\Exceptions\Handler.php
来覆盖它。 / p>
为此,请将以下内容添加到Handler
中App\Exceptions\Handler.php
类的顶部:
use Illuminate\Auth\AuthenticationException;
然后添加以下方法,根据需要进行编辑:
/**
* Convert an authentication exception into an unauthenticated response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Auth\AuthenticationException $exception
* @return \Illuminate\Http\Response
*/
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->guest('login'); //<----- Change this
}
只需将return redirect()->guest('login');
更改为return redirect()->guest(route('auth.login'));
或其他任何内容。
我想把它写下来,因为花了我超过5分钟来搞清楚。如果你碰巧在文档中找到了这个,请告诉我一行,因为我不能。
答案 1 :(得分:30)
只是为了延伸@ ultimate的答案:
App\Http\Middleware\Authenticate::handle()
方法并将auth/login
更改为/login
。$loginPath
属性添加到\App\Http\Controllers\Auth\AuthController
课程。为什么?见Laravel source。结果你将在中间件中使用它:
namespace App\Http\Middleware;
class Authenticate {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
else
{
return redirect()->guest('/login'); // <--- note this
}
}
return $next($request);
}
}
这在您的AuthController中:
namespace App\Http\Controllers\Auth;
class AuthController extends Controller
{
protected $loginPath = '/login'; // <--- note this
// ... other properties, constructor, traits, etc
}
答案 2 :(得分:10)
这是Laravel 5.4解决方案:
app / Exceptions / Handler.php中有一个新的unauthenticated()方法,它处理未经身份验证的用户并重定向到登录路径。
所以改变
((86400 + (7200 - 28800)) % 86400)
到
return redirect()->guest('login');
答案 3 :(得分:5)
在Laravel 5.6中,转到app / Exceptions文件夹并打开Handler.php,添加一个覆盖未经身份验证的方法的新方法,如下所示:
protected function unauthenticated($request, AuthenticationException $exception)
{
if($request->ajax())
{
return response([
"message" => "Unauthenticated.",
"data" => [],
],401);
}
return redirect()->to('/');
}
使用内置的“auth”中间件访问受保护的路由时会触发此方法。现在,您可以完全控制重定向或发送响应的位置。
答案 4 :(得分:4)
使用Laravel 5中的中间件进行身份验证检查。
auth的中间件是App\Http\Middleware\Authenticate
。
因此,您可以在中间件的handle
方法中更改它。
答案 5 :(得分:3)
编辑:在Laravel 5.1上,只需将 protected $ redirectPath =&#39; / url / you / want&#39 ;; 添加到AuthController即可。
参考:http://laravel.com/docs/5.1/authentication#included-authenticating
在Laravel 5.1上,它完全转移到 App \ Http \ Middleware
下的另一个名为 RedirectIfAuthenticated.php 的中间件 window.onload = function () {
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var button = document.getElementsByTagName("button")[0];
var imageObj = new Image();
imageObj.onload = function () {
context.drawImage(imageObj, 0, 0);
context.font = "40pt Calibri";
context.fillText("My TEXT!", 50, 100);
context.font = "20pt Calibri";
context.fillStyle = "red";
context.fillText("Tesr", 50, 200);
};
imageObj.src = "/path/to/image";
button.onclick = function (e) {
var data = canvas.toDataURL();
var post = new XMLHttpRequest();
post.open("POST", "/echo/html/");
post.onload = function (e) {
console.log(this.responseText)
};
post.send("html=" + encodeURIComponent(data));
};
};
希望它有所帮助。
答案 6 :(得分:0)
由于您的其他question被标记为重复..我会尝试在此处回答..
首先,您需要更改路线,如
<?php
Route::get(config('constants.cms_path') . '/login', [
'as' => 'login',
'uses' => 'Auth\AuthController@getLogin'
]);
在您的刀片中...确保您在登录网址链接中使用命名路线,如
{{ route('login') }}
在Middleware / Authenticate.php中,将重定向访客更改为
return redirect()->guest(config('constants.cms_path') . '/login');
答案 7 :(得分:0)
请你输出php artisan route:list
你是对的,你可以设置以下属性:
protected $loginPath = 'xxx';
protected $redirectPath = 'xxx';
protected $redirectAfterLogout = 'xxx';
将此属性设置为AuthController.php
答案 8 :(得分:0)
要在登录后更改重定向,您只需要转到app / Http / Controllers / Auth / LoginController.php并在类LoginController中添加:
protected $redirectTo = '/redirect-url-here';
新用户注册后重定向相同,但在这种情况下,在AuthController.php上
答案 9 :(得分:0)
对于Laravel 5.4您可以设置protected $ redirectTo =&#39; /&#39 ;;在LoginController.php文件中。 或者在RegistersUsers.php文件中你可以
protected function registered(Request $request, $user)
{
return redirect('tosomeRoute');
//Note: This code will run when
//The user has been registered
}