【问题标题】:How to redirect back after logout, unless page needs authentication?注销后如何重定向回来,除非页面需要身份验证?
【发布时间】:2018-10-28 16:59:18
【问题描述】:

我已经熟悉 Redirect::back(); Laravel 的命令。我在最初的搜索中看到了,但我想知道如何在 Redirect::back(); 之后重定向远离经过身份验证的页面;工作。

这是 AuthController 的注销

public function logout()
{
    $accessToken = auth()->user()->token();

    $refreshToken = DB::table('oauth_refresh_tokens')
    ->where('access_token_id', $accessToken->id)
    ->update([
        'revoked' => true
    ]);

    $accessToken->revoke();

    // REDIRECTS USERS BACK TO THE PAGE THEY LOGGED OUT OF
    Redirect::back();
    return response()->json(['status' => 200]);
}

我已经设置了重新路由的路线

{
    path: '/dashboard',
    component: require('./../views/dashboard.vue'),
    meta: {
        middlewareAuth: true
    }
}

随着

router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.middlewareAuth)) {
    if (!auth.check()) {
        next({
            path: '/login',
            query: {
                redirect: to.fullPath
            }
        });
        return;
    }
}
next();
})

当用户点击它并且正在工作时重定向。

作为一个例子,我想要发生的事情如下

主页 -> 注销 -> 主页 [WORKS]
仪表板 -> 注销 -> 主页 [不起作用] 重定向回仪表板。

【问题讨论】:

    标签: laravel vue.js


    【解决方案1】:

    如果您来自 Dashboard,那么 Redirect back 应该会尝试将您发送回 Dashboard,这听起来像是在做的。如果您希望它转到主页,则可以指定重定向以转到主页。

    【讨论】:

    • 我明白了,但我认为中间件会捕获它,然后将其重定向到登录,考虑到您不应该能够在不登录的情况下访问仪表板。
    • 哦,所以您可以在注销时查看仪表板,即使您只应该在登录时查看它?这听起来绝对像是一个关于如何为仪表板设置中间件的身份验证问题。
    猜你喜欢
    • 1970-01-01
    • 2019-07-11
    • 2011-02-18
    • 2012-06-30
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多