我已通过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');
});
答案 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服务器的完全访问权限。