我的项目/路由/api.php
Route::group(['middleware' => ['auth:api']], function () {
Route::post('/v1/like', 'APIController@set_like');
});
当已认证的用户点击“喜欢”按钮时,一切都没问题,一切顺利进行。但是当访客点击该按钮时,我会通过Javascript将他们重定向到登录页面,等他们验证身份后再将其重定向到RedirectIfAuthenticated中间件指定的页面,通常是/home。 我将该中间件修改如下:
myproject/app/Http/Middleware/RedirectIfAuthenticated.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect()->intended('/home');
}
return $next($request);
}
}
我的Ajax调用是这样的:
var toggleLike = function(){
var token = USER_TOKEN; //javascript variable
var current_type = $(thisLikeable).attr("data-type");
var current_id = $(thisLikeable).attr("data-id");
var jqxhr = $.post( APP_URL + "/api/v1/like", {api_token: token, type: current_type, id: current_id}, function(data) {
setLikeAppearance(data.message);
})
.fail(function(xhr, status, error){
if (xhr.status == 401) {
window.location = APP_URL + "/login" ;
}
});
};
这里的问题在于intended()函数,在Ajax调用中未存储正确的会话变量,我无法弄清如何正确设置它。 显然我错过了一些明显的东西,有人能帮助吗? 谢谢!
编辑: 我想要实现以下目标: 1. GUEST在//mysite/blabla中 2. 点击“喜欢”按钮 3. 被重定向到登录页面 4. 登录(或注册) 5. 被重定向到//mysite/blabla,并已经触发了“喜欢”按钮。