所以我正在开发一个具有用户身份验证的Angular应用程序。
我不对身份验证的后端负责。
该项目目前有一个端点,我点击它来点击单独托管的登录页面。
所以这就是它的方式。
(这些是样本名称)
我们的主要网络应用程序有https://node11.dev.com/webappname
之类的链接此webapp的用户登录信息
https://node11.dev.com:8082/api/applications/webappname/user/login/
当你点击那个终点时,你得到了
https://node3.dev.com/cas/login?service =从重定向的端点链接以及JSessionId
很确定我们正在使用Spring + CAS Web Security。
我使用我的用户名和密码登录正常,但是在成功登录后,我只返回带有网址的空白页
https://node11.dev.com:8082/api/applications/user/login。
我需要重定向回主应用页面,同时启用注销以及不支持注销。
我该如何解决这个问题?
一些相关的代码。
这是在导航HTML中,此登录按钮位于UI上。
<a class="user" href="https://node17.catapult.dev.boozallenet.com:8082/api/applications/godzilla/login"><i class="fa fa-user"></i> Login <i class="fa fa-caret-down"></i></a>
之前我没有使用href,而是因为我觉得我可能不得不使用POST或GET。
当我使用ng-click时,它调用了一个函数goToLogin,这就是函数所做的。
function goToLogin(){
$window.location.href=url;
}
答案 0 :(得分:0)
您正在上演或发帖吗?您可能应该使用ajax POST到该URL并让angular验证登录是否成功(通过服务器响应)。然后你可以使用任何路由器(ui-router是一种流行的,如果令人沮丧的解决方案)从角度调用登录状态。
答案 1 :(得分:0)
解决这个问题的最佳案例是在APP中使用switch case,最初使switch的值为false,成功登录或从服务器响应后将switch的值设置为true。
<div ng-switch on="loginData" > <!-- begin switch -->
<div ng-switch-when="false" ng-controller="loginController" ng-init="initLogin()">
</div>
<div ng-switch-when="true" ng-controller="dataController">
</div>
</div>
另一种解决方案
在你的应用中使用路由 仅使用ng-binding div
var module = angular.module("SalesApp", ['ngRoute']);
module.config(['$routeProvider','$locationProvider','$httpProvider',
function($routeProvider) {
// var dir = window.location.pathname;
$routeProvider.
when('/dashboard', {
templateUrl: 'frontView.html',
}).
when('/searchresult', {
templateUrl: 'resultContainer.html',
}).
when('/postad', {
templateUrl: 'postAd.html',
}).
otherwise({
redirectTo: '/dashboard'
});
}]);
登录后只需更改div的根目录。
$location.path(pagePath);
两者在很大程度上对我有用 感谢。
答案 2 :(得分:0)
这最终最终得到了解决。基于我们的应用程序设计,我无法从前端修复它。在后端,他们必须将CAS重定向网址更改回原始应用程序网址。