을 보호하는 방법퍼'/로그인/'끝점

0

질문

최근에 나는 통합된 상위 내 웹 응용 프로그램도록할 때 사용자에 의해 인증된 내 웹 응용 프로그램에 입력할 수 있는 상위하고보기/편집/작성 기반으로 하는 대시보드에 자신의 역할을 클릭하면 링크를 할 필요가 없어도 로그인합니다. 이 일을 위해 나를 우회하는 로그인에 대한 언급 은 이 문서입니다.

사용자 지정 securitymanager 의 사용하여 로그인 우회

class CustomAuthDBView(AuthDBView):

    @expose('/login/', methods=['GET', 'POST'])
    def login(self):
        redirect_url = self.appbuilder.get_url_for_index
        user_name = request.args.get('username')
        user_role = request.args.get('role')
        if user_name is not None:
            user = self.appbuilder.sm.find_user(username=user_name)
            if not user:
                role = self.appbuilder.sm.find_role(user_role)
                user = self.appbuilder.sm.add_user(user_name, user_name, 'last_name', user_name + "@domain.com", role, password = "password")
            if user:
                login_user(user, remember=False)
                return redirect(redirect_url)

        else:
            print('Unable to auto login', 'warning')
            return super(CustomAuthDBView,self).login()

class CustomSecurityManager(SupersetSecurityManager):
    authdbview = CustomAuthDBView
    def __init__(self, appbuilder):
        super(CustomSecurityManager, self).__init__(appbuilder)

그래서에 따라 위의 코드를 사용하여 url http://localhost:8088/login?username=John 로그인이 사용자가 존 내부적으로는 경우 또는 사용자가 존재하지 않 계정을 만들과 함께 어떤 역할을 기반으로의 역할에 사용자가에서 내 웹 응용 프로그램

지금 문제는 누구나 추측할 수 있 이 url http://localhost:8088/login?username=USER_NAME 을 만들 수 있습니다 계정에서 상위,그래서 어떻게 보호하거나 안전이 '/login' 끝점

1

최고의 응답

0

API 를 사용할 수 있도록 당신은 노출 요청 정보를 통해 URL 을 입력합니다.

from flask_appbuilder.api import BaseApi, expose
from . import appbuilder

    class LoginApi(BaseApi):

    resource_name = "login"
    
    @expose('/loginapi/', methods=['GET','POST'])
    #@has_access
    
    def loginapi(self):
        if request.method == 'POST':
            username = request.json['username']
            password = request.json['password']



appbuilder.add_api(LoginApi)
2021-11-24 10:09:07

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................