我目前正在创建一个角度Web应用程序,需要对某些部分进行身份验证,但不需要整个部分。
我必须使用来自外部方的CAS身份验证页面,并且无法弄清楚如何将两者融合在一起。
通常,我只是包含phpCas :: ForceAuthentication方法来启用auth,但由于调用来自部分视图,因此它是XHR请求,因此无法重定向到CAS页面(跨域错误)。
我涉及在主页面上进行身份验证的解决方案,这些解决方案有时会被触发,从主服务和其他一些服务器重定向,但还没有任何工作。
如果需要,我可以详细了解相关的确切设置。
谢谢!
答案 0 :(得分:5)
这就是我所做的,如果请求的视图需要身份验证,我会检查每个路由更改,如果是,则重定向到登录页面。以下是我的一些代码:
检查视图是否需要身份验证:
app.run(['$rootScope', '$state', 'UserFactory',
function ($rootScope, $state, UserFactory) {
$rootScope.$on("$stateChangeStart", function (event, toState) {
if (toState.authenticate && !UserFactory.IsAuthenticated()) {
$state.transitionTo("login");
event.preventDefault();
}
});
}
]);
查看配置:
$stateProvider.state({
name : 'stateName',
url : '/path/',
templateUrl : 'public/partials/template.html',
controller : 'SomeController',
authenticate: true //or false if authentication is not required
})
希望这对你有所帮助,祝你好运
答案 1 :(得分:0)
不确定我完全理解你需要做什么,但也许你可以使用http拦截器? angular docs here中有更多信息。我想你可以抓住身份验证请求并以这种方式重定向?