2015-09-21 2 views
1

Так что я разрабатываю приложение с угловыми углами, которое имеет аутентификацию пользователя.Возвращаясь к угловой странице после успешного входа в систему?

Я не несу ответственности за внутреннюю аутентификацию.

Проект, поскольку в настоящее время у него есть конечная точка, на которую я попал, чтобы попасть на страницу входа, размещенную отдельно.

Так вот как это происходит.

(Эти образцы имена)

Наш главный WebApp имеет связь как https://node11.dev.com/webappname

Логин пользователя для данного веб-приложение идет

https://node11.dev.com:8082/api/applications/webappname/user/login/

И когда вы нажмете, что конечная точка Вы получаете

https://node3.dev.com/cas/login?service = Ссылка на конечную точку, с которой она перенаправляется наряду с JSessionId

Довольно уверен, что мы используем Spring + CAS Web Security.

Я войти в порядке с моим именем и паролем, однако после успешного входа в систему, я просто вернуться на пустую страницу с URL

https://node11.dev.com:8082/api/applications/user/login.

Мне нужно перенаправить обратно на главную страницу приложения, а также включить выход из системы, а что нет.

Как это сделать?

Некоторое значение кода.

Это 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 я имел нг щелчок, потому что я чувствовал, что я, вероятно, придется использовать POST или GET.

Когда я использовал ng-click, он называл функцию goToLogin, и это то, что сделала эта функция.

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

    } 
+0

Можете ли вы разместить любой соответствующий код? В противном случае трудно определить проблему. –

+0

путь слишком много неизвестных здесь, но если вы используете 'ui-router', то решение в основном родительском маршруте может помочь вам – charlietfl

ответ

0

Вы получаете или POSTING? Вероятно, вы должны использовать POST для этого URL-адреса с помощью ajax и разрешить угловую проверку того, что логин был успешным (через ответ сервера). Затем вы можете использовать любой маршрутизатор (ui-router - популярное, если разочаровывающее решение), чтобы вызвать состояние входа в систему из углового.

+0

В настоящее время. Ни. В конце пользовательского интерфейса это достигается с помощью привязанного тега с установкой href: https://node11.dev.com:8082/api/applications/user/login Если бы я был POST, как бы я мог выполнить то, что вы заявили. –

+0

Я бы использовал службу $ http в комплекте с угловым. В форме входа в систему submit (ng-submit) выполните функцию, которая использует $ http (https://docs.angularjs.org/api/ng/service/$http) для отправки учетных данных на конечную точку вашего сервера. Затем в вашей функции успеха получите и сохраните токен сеанса (jsessionid), который вы можете использовать в качестве параметра при последующих запросах на сервер. Наличие этого токена означает, что вы вошли в систему. UI-Router (https://github.com/angular-ui/ui-router) - это еще одна возможность из bean-компонентов, но так я перехожу к новой странице в угловом формате. –

+0

У меня нет отдельной формы для входа, к сожалению. Вход, который отображается, не является частью этого приложения, но является отдельной частью интерфейса для веб-службы CAS. Я думаю, самый простой способ - создать шаблон входа для HTML и отправить форму, поскольку вы предлагаете ударить эту конечную точку. –

0

Самый лучший случай для решения этого вопроса - это использовать коммутационный футляр в APP, изначально сделать значение переключателя ложным, после успешного входа или ответа с сервера сделать значение переключателя равным 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> 

другое решение

использование маршрутизации в Уре использовании приложение только нг связывания 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' 
       }); 
     }]); 

и после входа в систему просто изменить корень дел.

$location.path(pagePath); 

И работает для меня в значительной степени Спасибо.

0

Это, в конечном счете, в конечном итоге получило разрешение. Основываясь на дизайне нашего приложения, я не мог исправить его с передней стороны. На заднем плане им пришлось изменить URL-адрес перенаправления CAS на исходный URL-адрес приложения.

Смежные вопросы