Recientemente he integrado superconjunto con mi aplicación web, de modo que cuando un usuario que se ha autenticado por mi aplicación web puede entrar superconjunto y ver/editar/crear cuadros de mando basados en su función haciendo clic en el enlace de ninguna necesidad incluso de inicio de sesión. Para hacer esto tuve que omitir el inicio de sesión para la que me he referido en este artículo.
Personalizado SecurityManager he utilizado para la derivación de inicio de sesión
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)
Así que de acuerdo al código anterior utiliza la url http://localhost:8088/login?username=John
será el inicio de sesión el usuario Juan internamente o si el usuario Juan no existe se crea la cuenta con algún papel que se basa en el papel de usuario en mi aplicación web
Ahora, el problema es quien puede adivinar esta url http://localhost:8088/login?username=USER_NAME
puede crear su cuenta en superconjunto, entonces, ¿cómo proteger o asegurar esta '/login'
extremo