Вход в LDAP с помощью Flask и мульти-приложения AngularJS - PullRequest
0 голосов
/ 12 марта 2020

У меня проблема с получением логина. У меня работает скрипт LDAP python, но у меня возникают проблемы с правильной маршрутизацией / перенаправлением пользователя в систему и из нее. По сути, у меня есть 2 angularjs 1.3 приложения, которые используют flask для использования некоторых серверных API. Для входа в систему у меня есть python скрипт, который принимает имя пользователя и pwd и возвращает Pass или Fail. Структура файла выглядит следующим образом:

ipLookup
  -app.js
  -index.htm
  -views
statsDashboard
  -app.js
  -index.htm
  -views

index.htm
login.htm

flask_scripts
  flask_scripts.py

ipLookup >> app. js

var app = angular.module('NetApp', ['ngRoute']);
app.config(function($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl : './views/ipSearch.htm',
        controller : 'configController'
        })
    .when('/configResults', {
        templateUrl : './views/ipResults.htm',
        controller : 'configResultsController'
    })
    .when('/login', {
        templateUrl : './././login.htm',
        controller : 'loginController'
      })
});
.....

statsDashboard >> app. js

var app = angular.module('NetApp', ['ngRoute']);
app.config(function($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl : './views/statSearch.htm',
        controller : "searchController"
        })
    .when('/statResults', {
        templateUrl : './views/statResults.htm',
        controller : "statResultsController"
    })
    .when('/login', {
        templateUrl : './././login.htm',
        controller : 'loginController'
      })
});

flask_scripts >> flask_scripts.py

from flask import Flask, request, url_for, session
app = Flask(__name__)
@app.route('/ipsearch', methods=['POST'])
def ip_check():
    if not session.get('logged_in'):
    return redirect(url_for('login'))
    from python.extl import search_ip_addr
    ip_result = request.form.get('ip_result','')
    return search_ip_addr.ip_db_search(ip_result)

@app.route('/statsearch', methods=['POST'])
def stat_check():
    if not session.get('logged_in'):
    return redirect(url_for('login'))
    from python.extl import stat_search
    stat_result = request.form.get('stat_result','')
    return stat_search.get_int_stat(stat_result)

@app.route('/login', methods=['POST'])
def login():
    from python.extl import active_directory
    username = request.form.get('username','')
    password = request.form.get('password','')
    # Return 'Pass' if login is successful, else return 'Fail'
    auth = active_directory.ldap_auth(username, password)
    if 'Pass' in auth:
        print('You Shall Pass!')
        session['logged_in'] = True
    # Return user to original URL if login successfully
    return redirect(original_url)
    elif auth is False:
    print('You Shall Not Pass!')
        session['logged_in'] = False
    else:
    print('Pass Error!')
        session['logged_in'] = False
    return auth

# Capture url where user first landed
@app.before_request
def before_request():
    # Capture the URL of the page where user first landed
    original_url = request.url

if __name__ == '__main__':
    app.run(debug=True)

Я унаследовал это приложение, и на данный момент все, что я могу сделать, это включить аутентификацию LDAP и могу Не тратьте время на переход к новому Angular или массовую его реструктуризацию. Пожалуйста, помогите мне с включением входа в оба приложения. Когда пользователь не вошел в систему, он должен быть перенаправлен в login.htm, и после этого он отправляет его обратно в приложение, в котором он находился. Вход в систему 2 раза для каждого приложения также является опцией.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...