Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建路径组的步骤_Python_Flask_Authorization_Stormpath - Fatal编程技术网

Python 创建路径组的步骤

Python 创建路径组的步骤,python,flask,authorization,stormpath,Python,Flask,Authorization,Stormpath,我已经使用Flask Stormpath创建了一个Python应用程序,并且正在按照文档创建用于身份验证的组。在添加5行组创建代码之前,程序运行良好。现在,当我编译以下代码时(在本例中仅显示app.py的第一部分): 我现在从Stormpath库中得到一个编译错误: (venv)Marks-MacBook-Pro-2:flask_heroku markschulz$python app.py 回溯(最近一次呼叫最后一次): 文件“app.py”,第41行,在 directory=stormpat

我已经使用Flask Stormpath创建了一个Python应用程序,并且正在按照文档创建用于身份验证的组。在添加5行组创建代码之前,程序运行良好。现在,当我编译以下代码时(在本例中仅显示app.py的第一部分):

我现在从Stormpath库中得到一个编译错误:

(venv)Marks-MacBook-Pro-2:flask_heroku markschulz$python app.py 回溯(最近一次呼叫最后一次): 文件“app.py”,第41行,在 directory=stormpath\u manager.application.default\u account\u store\u mapping.account\u store 文件“/Users/markschulz/Projects/maid2match/venv/lib/python2.7/site packages/flask_stormpath/init.py”,第266行,在应用程序中 ctx=stack.top.app AttributeError:“非类型”对象没有属性“应用”

我需要做什么来克服这个错误?“目录”的代码行直接取自Stormpath文档。

编辑:

这个答案不适用于您正在构建“一个简单的特定于应用程序的管理面板作为应用程序的一部分,以便业务管理员类型可以使用”的情况

原始答案:

您应该使用Stormpath管理面板来实现这一点。登录Stormpath帐户后:

创建一个组

  • 单击导航栏中的
    按钮

  • 单击
    创建组
    按钮

  • 选择目录,然后输入名称和说明

  • 有关更多详细步骤,请参见(带图像)

    将帐户添加到组中

    单击导航栏中的
    按钮

    单击左侧菜单上的
    Accounts

    单击添加现有帐户,然后选择要添加到组中的帐户


    请参阅以了解更多详细步骤(带图像)。

    我同意这是IT管理员类型的组管理方式。通过这段代码,我希望构建一个简单的特定于应用程序的管理面板,作为应用程序的一部分,以便业务管理员类型可以使用。我不想让这些类型在完整的Stormpath管理面板中出现。顺便说一句,我从Stormpath support那里听到了关于组管理API支持的消息,当然他们说了一个很明显的事实:Python文档中有关于这方面的文档,而不是Python Flask文档。仍然需要RTFM。很好。我开发的烧瓶应用程序是针对管理员类型的,所以我没有考虑涉及商业管理类型的案例。当你弄明白这一点时,一定要在这里添加一个答案,我现在很好奇如何让它起作用!
    from os import environ
    
    from flask import Flask, session, request, jsonify, g, abort, url_for, redirect, render_template, g, flash, escape
    from flask_cors import CORS, cross_origin
    
    from flask_stormpath import StormpathManager, User, login_required, login_user, logout_user, user, groups_required
    from stormpath.error import Error as StormpathError
    from datetime import timedelta
    
    app = Flask(__name__, static_url_path='/static')
    
    CORS(app)
    
    app.config['DEBUG'] = True
    app.config['SECRET_KEY'] = environ.get('SECRET_KEY', 'this_should_be_configured')
    app.config['STORMPATH_API_KEY_ID'] = environ.get('STORMPATH_API_KEY_ID')
    app.config['STORMPATH_API_KEY_SECRET'] = environ.get('STORMPATH_API_KEY_SECRET')
    app.config['STORMPATH_APPLICATION'] = environ.get('STORMPATH_APPLICATION')
    app.config['STORMPATH_APPLICATION_HREF'] = environ.get('STORMPATH_APPLICATION_HREF')
    app.config['STORMPATH_CLIENT_APIKEY_ID'] = environ.get('STORMPATH_CLIENT_APIKEY_ID')
    app.config['STORMPATH_CLIENT_APIKEY_SECRET'] = environ.get('STORMPATH_CLIENT_APIKEY_SECRET')
    app.config['STORMPATH_URL'] = environ.get('STORMPATH_URL')
    app.config['STORMPATH_ENABLE_LOGIN'] = False
    app.config['STORMPATH_ENABLE_REGISTRATION'] = False
    app.config['STORMPATH_ENABLE_LOGOUT'] = False
    
    app.config['STORMPATH_COOKIE_DURATION'] = timedelta(minutes=60)
    
    stormpath_manager = StormpathManager(app)
    stormpath_manager.login_view = '.login'
    
    # Code to add groups to the application
    directory = stormpath_manager.application.default_account_store_mapping.account_store
    guests = directory.groups.create({'name': 'guests'})
    members = directory.groups.create({'name': 'members'})
    managers = directory.groups.create({'name': 'managers'})
    admins = directory.groups.create({'name': 'admins'})