成功登录后返回到angular页面

Going back to angular page after successful login?

本文关键字:angular 页面 返回 登录 成功      更新时间:2023-09-26

我正在开发一个具有用户身份验证的Angular应用程序。

我不负责认证的后端。

这个项目目前有一个端点,我点击它来访问单独托管的登录页面。

事情是这样的。

(这些是示例名称)

我们的主web应用程序有一个链接,如https://node11.dev.com/webappname

这个webapp的用户登录是

https://node11.dev.com: 8082/api/应用程序/webappname/用户/登录/

当你到达那个端点时,你得到

https://node3.dev.com/cas/login?service =指向它被重定向的端点的链接以及JSessionId

非常确定我们正在使用Spring + CAS Web Security。

我用我的用户名和密码登录,但是成功登录后,我只是返回到一个空白页面,url

https://node11.dev.com: 8082/api/应用程序/user/登录。

我需要重定向回主应用程序页面,随着启用注销和什么不是。

我该怎么做?

一些相关的代码。

这是在UI上的登录按钮所在的导航HTML中。

<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,而是使用ng-click,因为我觉得我可能不得不使用POST或GET。

当我使用ng-click时,它调用了一个函数goToLogin,这个函数就是这样做的。

function goToLogin(){
       $window.location.href=url;
    }

你是在获取还是发布?你应该用ajax POST到那个url,让angular验证登录是否成功(通过服务器响应)。然后,你可以使用任何路由器(ui-router是一个流行但令人沮丧的解决方案)从angular中调用登录状态。

解决这个问题的最好方法是在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-bindingdiv

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);

在很大程度上都适合我谢谢。

这个问题最终得到了解决。基于我们应用程序的设计,我无法从前端修复它。在后端,他们必须将CAS重定向url更改回原始应用url。