Où sont stockées les données dans Leaflet
P粉883973481
P粉883973481 2024-02-25 20:25:54
0
1
408

J'ai une application de brochure opérationnelle utilisant Plain Leaflet, HTML, CSS et JS. Actuellement, c'est juste dans un dossier avec un fichier index.html, un fichier main.js et un dossier avec toutes mes données. Les données sont des données Geojson. Je souhaite en fin de compte que les données avec lesquelles je travaille soient inaccessibles aux utilisateurs lorsque je les mets en ligne. Je recherche une vue d'ensemble, un aperçu de la façon dont je devrais résoudre ce problème.

J'envisage d'utiliser quelque chose comme MongoDB pour stocker mes données, mais il n'existe aucun précédent ni tutoriel en ligne sur la façon de faire exactement cela avec Leaflet. Cela semble également nécessiter de nombreuses modifications de mon code et essayer d'ajouter express et node(?) à mon application. Toutes les idées ou liens vers des exemples seraient grandement appréciés.

P粉883973481
P粉883973481

répondre à tous(1)
P粉505917590

Vous pensez dans la mauvaise direction avec MongoDB car cela ne protège pas vos données de manière supplémentaire.

Il n'est pas possible de servir une simple page Web HTML, mais de masquer les données - car n'importe qui peut y accéder dans le code source HTML.

Ce dont vous avez besoin, c'est d'un fournisseur tiers prenant en charge OAuth, tel que :

Ils vous délivreront un JWT comme indiqué dans la documentation Huawei ci-dessous, puis côté serveur, vous devrez valider le jeton et décider de fournir ou non les données.

Même dans ce cas, les clients autorisés peuvent obtenir et distribuer vos données.

Je connais ce genre de choses car en tant que développeur amateur, j'ai écrit 2 jeux Web et j'utilise ces 4 services (il y en a plus) pour authentifier les utilisateurs.

Voici mon exemple de code Java côté serveur pour vérifier le kit de compte Huawei :

private void handleHuaweiAuth(HttpServletRequest httpReq, HttpServletResponse httpResp) throws ServletException, IOException {
    String error            = httpReq.getParameter("error");
    String errorDescription = httpReq.getParameter("error_description");
    String code             = httpReq.getParameter("code");
    String state            = httpReq.getParameter("state");

    // use hash of salt and current month name as CSRF protection
    String month = md5("PUT SOME SECRET HERE" + Calendar.getInstance().getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH));

    if (error != null) {
        throw new ServletException(error + ": " + errorDescription);
        
    } else if (code != null && month.equals(state)) {
        MultiMap postParams = new MultiMap();
        postParams.put("code",          code);
        postParams.put("client_id",     HUAWEI_ID);
        postParams.put("client_secret", HUAWEI_SECRET);
        postParams.put("redirect_uri",  String.format(HUAWEI_REDIRECT_URI, mLanguage));
        postParams.put("grant_type",    "authorization_code");
        
        try {
            String tokenStr = mHttpClient.POST(HUAWEI_TOKEN_URL)
                .headers(httpFields ->
                {
                    httpFields.add(new HttpField(HttpHeader.ACCEPT, APPLICATION_JSON));
                    httpFields.add(new HttpField(HttpHeader.CONTENT_TYPE, APPLICATION_URLENCODED));
                })
                .body(new StringRequestContent(UrlEncoded.encode(postParams, StandardCharsets.UTF_8, false)))
                .send().getContentAsString();
            LOG.info("handleHuaweiAuth tokenStr = {}", tokenStr);
            Map tokenMap = (Map) new JSON().fromJSON(tokenStr);
            //String accessToken = tokenMap.get("access_token");
            //String refreshToken = tokenMap.get("refresh_token");

            // NOTE: the code is only valid for 1 usage.
            // If the user reloads this page, then the following will be returned:
            // {"sub_error":20156,"error_description":"code used twice","error":1101}
            // parsing token will result in NPE caught below and redirect to front page

            String idToken = tokenMap.get("id_token");
            Map idMap = parseJwt(idToken);
            String sid    = idMap.get("sub"); 
            String photo  = idMap.get("picture");
            String given  = idMap.get("given_name");
            String family = idMap.get("family_name");

            printGameApp(httpReq, httpResp, HUAWEI, sid, given, family, photo);
            return;
        } catch (InterruptedException | TimeoutException | ExecutionException | NullPointerException ex) {
            LOG.warn("handleHuaweiAuth", ex);
            // redirect to the front page
            httpResp.sendRedirect("/");
            return;
        }
    }
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!