使用CAS身份验证,登录后重定向,Laravel

时间:2020-03-03 15:30:25

标签: laravel cas

我已通过cas进行身份验证,并且尝试在登录后以及从应用程序注销到页面时尝试重定向用户。问题是只能工作1/2。

1)->登录后重定向正确,但是注销后跳过我的页面并重定向到cas(url:/)

2)->注销可以重定向,但是登录时没有重定向到我的应用,并且我收到此消息:(url:/ login)

您(用户)已成功登录中央身份验证 服务。但是,您看到此页面是因为CAS不知道 关于您的目标目的地以及如何到达目的地的信息。检查 再次进行身份验证请求并确保目标 在CAS中授权和注册的服务/应用程序是 指定。

CAS_HOSTNAME=cas.example.co
CAS_REAL_HOSTS=cas.example.co
CAS_LOGOUT_REDIRECT=http://127.0.0.1:8000/login
CAS_REDIRECT_PATH=http://127.0.0.1:8000/login
CAS_CONTROL_SESSIONS=false
CAS_VALIDATE_CN=false
CAS_ENABLE_SAML=false

web.php

Route::get('/logout', function() {

    if( cas()->isAuthenticated() ) {

        auth()->logout();
        session()->flush();
        request()->session()->getHandler()->destroy(request()->session()->getId());
        cas()->logout();
        return redirect('/');
    } else {
        session()->flush();
        return redirect('/login');
    }
});

Route::group(['middleware'=>'cas.guest'],function () {
    Route::get('/login', 'AuthController@index');
});

1 个答案:

答案 0 :(得分:0)

您应将service参数传递到/login/logout端点,以便指示CAS在成功登录/注销后将用户重定向到指定的服务URL。

因此,假设CAS服务器在https://cas.example.com上可用,则登录/注销URL应如下:

登录:

https://cas.example.com/login?service=https://myservice.example.com

注销:

https://cas.example.com/logout?service=https://myservice.example.com

在两种情况下都应转义服务网址。

另一个选项将是为CAS服务器配置上的登录/注销端点定义默认重定向URL。这样,无需向上述端点提供service参数。在下面找到相应的属性:

cas.logout.redirectUrl=your_service_url
cas.view.defaultRedirectUrl=your_service_url

注意:关于注销重定向URL,默认情况下CAS不允许注销时重定向。若要更改此行为,应启用cas.logout.followServiceRedirects属性。更多here

根据上述建议,我假设您具有对CAS服务器的完全访问权限