Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止AngularJS路由尝试使用服务器端SSO重新验证?_Angularjs_Single Sign On - Fatal编程技术网

如何防止AngularJS路由尝试使用服务器端SSO重新验证?

如何防止AngularJS路由尝试使用服务器端SSO重新验证?,angularjs,single-sign-on,Angularjs,Single Sign On,我已经设置了一个AngularJS应用程序,在模块上使用以下路由配置: $stateProvider. state('home', { url: '/', templateUrl: 'public/modules/core/views/home.client.view.html' }). state('page2', { url: '/test', templateUrl: 'public/modul

我已经设置了一个AngularJS应用程序,在模块上使用以下路由配置:

$stateProvider.
    state('home', {
        url: '/',
        templateUrl: 'public/modules/core/views/home.client.view.html'
    }).
    state('page2', {    
        url: '/test',
        templateUrl: 'public/modules/core/views/test.client.view.html'
    });
我的Web服务器上有SSO软件,它强制我登录,如果获得授权,将在请求头上设置用户信息,并将我转发到请求页面。因此,当第一次点击应用程序()时,我登录并被重定向到上面的主页。Angular工作正常,并加载正确的模板。但是,当单击指向/test(要加载的第二个模板)的页面上的链接时,由于某种原因,它会尝试重新验证,我在浏览器控制台中收到一个跨域异常

我以为AngularJS会在单击链接时加载第二个模板,而不需要重新加载页面,这样服务器端SSO就不会重新触发。当我将模板嵌入到初始html文件中时,我能够毫无问题地加载模板,但我计划拥有许多模板,并希望将模板在各自的文件中分开

有人能看到我如何将模板保存在他们自己的文件中,但防止每次AngularJS重新路由时触发SSO吗


-----澄清:因此,在初始登录之后,会提供一个cookie。也许我只是不明白如何让AngularUI路由器使用cookie,这应该是后续请求的一部分。这通常是如何完成的?

除非您有特殊的JS代码来处理请求(例如角度请求拦截器),否则您的服务器配置很可能会出现问题。我使用
$stateProvider
的方式与您和我的一样

一种可能性是,您的服务器已配置为在每次请求
HTML
页面时强制进行身份验证。签出很容易-登录后,刷新当前页面。如果要求您再次登录,这就是问题所在

解决方案取决于您的服务器技术。解决方法是将test.client.view.html重命名为test.client.view.js并更新
templateUrl
,因为js加载似乎很正常


这是我最好的猜测,没有进一步的细节。希望有帮助。

请澄清两件事:第二个视图是否以某种方式与后端交互?例如,它是否使用$http服务向服务器发出请求?另外,将模板嵌入初始html文件是什么意思?如何在页面中包含您的视图?您正在使用ng view指令吗?@Tavio第二个视图现在不会向服务器发出任何请求(尽管它最终会发出请求)。这只是简单的html代码。当我将模板嵌入初始html文件时,我的意思是我将html放在初始文件中。然后我将templateUrl更改为id值,并在单击链接时加载它。我使用(在初始html文件中)作为模板的容器。我确实在/(主)视图上请求数据,并且它允许。我明白了。我从未以这种方式使用angular(我使用ng view指令,并将我的视图保存在单独的html文件中,而这些文件又被$routeProvider引用)。我希望其他人能回答你。