Nedávno som integrované nadmnožinu s mojím webovú aplikáciu tak, že pri používateľa, ktorý je overený podľa mojej webovej aplikácie môžete zadať nadmnožinu a zobraziť/upraviť/vytvoriť informačné panely založené na svoju úlohu len kliknutím na odkaz nie je potrebné, dokonca aj prihlasovacie údaje. Pre to som musel obísť prihlasovacie údaje, ktoré som uvedených tento článok.
Vlastné SecurityManager som použil obísť prihlásiť sa
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)
Takže podľa vyššie kód pomocou adresy url http://localhost:8088/login?username=John
bude prihlásenie užívateľa Ján interne alebo ak užívateľ Ján neexistuje účet je vytvorený s niektorými úloha, ktorý je založený na úlohy používateľa v mojej webovej aplikácie
Teraz problém je niekto, kto môže odhadnúť túto url http://localhost:8088/login?username=USER_NAME
môžete vytvoriť svoj účet v nadmnožinu, tak ako sa chrániť alebo zabezpečenie tejto '/login'
koncový bod