Member 12598238 Ответов: 1

Справка по входу пользователя с проверкой подлинности windows в IIS


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

Приложение представляет собой сайт ввода времени, который позволяет пользователям входить в систему с существующими учетными данными Windows для управления своим временем. Я могу передать их имя пользователя и пароль в JSON через Postman на страницу входа в систему, и она будет аутентифицироваться, однако, когда те же учетные данные вводятся в форму через браузер, это не удается.

Я опубликовал несколько скриншотов и код за страницей входа ниже. Если вам еще что-нибудь понадобится, просто дайте мне знать.

http://delorean.cisng888.csa/

Альбом размещен на sli.mg[^]

(function() {
  angular.module('Thunderdome').controller('LoginController', function($http, $scope, $rootScope, $location, $cookieStore, $state, loggedInUser, Logout, RetrieveSystemStatus) {
	RetrieveSystemStatus.retrieveStatus()
		.then(function(data){
			if(data[1].Value == "0")
			{
				$rootScope.systemStatus = data[1].Value;
				$rootScope.systemMessage = "";
				executeController()
			}
			else if(data[1].Value == "-1")
			{
			
				$rootScope.systemMessage = data[0].Value;
				$scope.message = $rootScope.systemMessage;
				$rootScope.systemStatus = data[1].Value;
			}
			else
			{
				$rootScope.systemMessage = data[0].Value;
				$scope.message = $rootScope.systemMessage;
				$rootScope.systemStatus = data[1].Value;
				executeController();
			}				
		},
		function(error){
		});
		
	function executeController()
	{
		//////////////////////////////////////////////////////////////////////////////
		//Initial Information
		$scope.message = ($rootScope.systemMessage == "" ? "Welcome to Time Entry." : $rootScope.systemMessage);
		$scope.username = "";
		$scope.password = "";
		$scope.returnedData = {};
		$scope.userAlreadyLoggedIn = false;
		$scope.showModal = false;
		
		if(!loggedInUser.getProfile().init)
		{
			if(!loggedInUser.getProfile().errors.length)
			{
				$state.go('home.main');
			}
			else
			{
				$scope.message = loggedInUser.getProfile().errors[0].message;
			}
		}
		/////////////////////////////////////////////////////////////////////////////////
		//Function: login()
		//Upon the user submisssion, perform the service call to build the user/employee's information for usage throughout the application.
		$scope.login = function()
		{
			var data = {
							"userName": $scope.username,
							"password": $scope.password,
							"browserString": navigator.appName
					}
			$http({
				  method: 'post',
				  url: 'http://10.1.150.174:8002/TimeEntry.svc/Login', 
				  headers: {'Content-Type':'application/json; charset=UTF-8; charset-uf8'},
				  data: data
				})
			.success(function(data, status, headers, config) {
				$scope.returnedData = data;
				evaluateSuccessfulRetrieval();
			})
			.error(function(data, status, headers, config) {
				$scope.message = "Oops, there has been issue.";
			});
				
		}
		
		/////////////////////////////////////////////////////////////////////////////////
		//Function: evaluateSuccessfulRetrieval(data)
		//Takes the information and evaluates for any errors that may have been returned.
		function evaluateSuccessfulRetrieval()
		{
			
			if($scope.returnedData.errors.length > 0)
				handleReturnedError($scope.returnedData.errors);
			else
			{
				$cookieStore.put("FunStuff", $scope.returnedData.auth);
				loggedInUser.setProfile($scope.returnedData);
				$state.go('home.main');
			}
			
		}
		
		/////////////////////////////////////////////////////////////////////////////////
		//Function: handleReturnedError(errors)
		//Handle any returned errors from the service call.
		function handleReturnedError(errors)
		{
			if(errors[0].code != 2)
				$scope.message = errors[0].message;
			else
				handleUserAlreadyLoggedIn();
		}
		
		/////////////////////////////////////////////////////////////////////////////////
		//Function: handleUserAlreadyLoggedIn()
		//Display the modal and remove the ability of the user to access the form elements.
		function handleUserAlreadyLoggedIn()
		{
			$scope.userAlreadyLoggedIn = true;
			$scope.showModal = true;
		}
		
		/////////////////////////////////////////////////////////////////////////////////
		//Function: handleUserAlreadyLoggedIn()
		//Handles the exception when a user is logged in elsewhere ro their session is still active.
		$scope.logout = function(code)
		{
			$scope.showModal = false;
			
			if(code == '2')
				logOutOtherLocation();
			else
				$scope.userAlreadyLoggedIn = false;
		}
		
		/////////////////////////////////////////////////////////////////////////////////
		//Function: logOutOtherLocation()
		//Log out the user's other session and proceed to log in this session.
		function logOutOtherLocation()
		{
			var logoutdata = {
							"Auth": "",
							"EmployeeID": $scope.username,
							"LogoutType": "2"
							}
			
			Logout.logout(logoutdata)
			.then(function(data){
				$scope.login();
			},
			function(error){
				$scope.message = "Oops, there has been issue.";
				$scope.userAlreadyLoggedIn = false;
			});
		}
	}
	
	
    });
}());


Что я уже пробовал:

Проверил код и повозился с настройкой в IIS manager

ZurdoDev

Что значит "не удалось"? И почему бы вам просто не отладить код?

Member 12598238

Он возвращает сообщение "не удалось аутентифицировать пользователя". Смотрите связанные изображения.

ZurdoDev

Но как мы узнаем, почему ваш код не работает? Вам нужно его отладить. Мы не можем им управлять.

1 Ответов

Рейтинг:
0

Member 12598238

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