成功登录后返回角度页面?

时间:2015-09-21 18:38:59

标签: javascript angularjs spring login cas

所以我正在开发一个具有用户身份验证的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;

    }

3 个答案:

答案 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重定向网址更改回原始应用程序网址。