suchen
HeimWeb-Frontendjs-TutorialSo implementieren Sie eine autorisierte On-Demand-Anmeldung für das Vue WeChat-Projekt

Dieses Mal zeige ich Ihnen, wie Sie eine autorisierte On-Demand-Anmeldung für das VueWeChat-Projekt implementieren und welche Vorsichtsmaßnahmen für die Implementierung einer autorisierten On-Demand-Anmeldung für das Vue WeChat-Projekt gelten. Das Folgende ist ein praktischer Fall.

Das Projekt verwendet Vue als Entwicklungsframework. Es gibt zwei Situationen, in denen Benutzer die Seite durchsuchen:

  1. Eine besteht darin, dass sich der Benutzer zuerst anmelden muss, bevor er fortfahren kann Durchsuchen;

  2. Das andere ist, dass Benutzer nach Belieben durchsuchen können, ohne sich anzumelden.

Seiten, die keine Benutzeranmeldung erfordern, können Vorgänge enthalten, die Benutzerinformationen erfordern. In diesem Fall muss sich der Benutzer anmelden, bevor nachfolgende Vorgänge ausgeführt werden können. Daher müssen Autorisierungs-Anmelderichtlinien unterschieden werden.

Ideen

1 Im Allgemeinen erfordert die H5-Seite, die wir für WeChat entwickeln, eine Authentifizierung beim Betreten der Seite, sodass der Benutzer dies tun muss Melden Sie sich an, um mit dem Surfen fortzufahren. Aufgrund der Produktanforderungen müssen wir für dieses Projekt jedoch die Authentifizierungsstrategien verschiedener Seiten aufteilen und sie nach allgemeinen und besonderen Kriterien gestalten:

2. Im Allgemeinen müssen Benutzer die Anmeldung autorisieren, sobald sie dies tun Betreten Sie die Seite gemäß dem routinemäßigen WeChat-Anmeldevorgang. Nach der Anmeldung surft der Benutzer weiter.

3. Konfigurieren Sie in besonderen Fällen eine Whitelist für Seiten, die keine Benutzeranmeldung erfordern. Geben Sie einfach die Route ein, die in der Whitelist vorhanden ist, und geben Sie nicht die Funktion ein, die die Benutzeranmeldung erkennt status , rendern Sie die Seite direkt.

Für Vorgänge, die Benutzerinformationen erfordern, wenn der Benutzer nicht angemeldet ist, muss die Seite nach meinem derzeitigen Verständnis aktualisiert werden, selbst wenn es sich um eine stille Autorisierung auf WeChat-Basis handelt, und dies ist nicht wirklich möglich sinnlose Autorisierung und setzen Sie den Benutzerbetrieb fort. Daher habe ich mich dafür entschieden, den Benutzern benutzerfreundlichere Eingabeaufforderungen auf der Front-End-Ebene zu geben, damit die Benutzer den Autorisierungsprozess verstehen. Der Nachteil besteht darin, dass der vorherige Vorgang nur eine autorisierte Anmeldung auslöste. Nach der autorisierten Anmeldung muss der Benutzer den Vorgang erneut durchführen.

// routerRule.js
export default function routerRule (router, whiteList = []) {
  // other codes...
  router.beforeEach( (to, from, next ) => {
    // 因为授权登录涉及异步操作,因此使用promise,成功的回调中调用next函数
    new Promise((resolve, rejects) => {
      if ( whiteListRouter.indexOf(to.path) !== -1 ) {
        resolve()
        return
       }
      // 常规页面授权登录过程
      if (hasToken()) {
        // codes,获取用户信息并且跳转所需跳转的页面
      } else {
        // 判断用户是否已经进行微信授权
        if (hasAuthed()) {
          // 进行过微信授权之后,重定向回来的url中包含了微信的授权信息,可以将url上截取的参数发送到服务器,换取用户的token,随后进入上述有token时候的步骤
          getWechatUserInfo().then(res => {
            resolve()
          })
        } else {
          // 用户尚未进行微信授权,则调用微信授权的方法,进行授权登录。
          getWechatAuth()
        }
      }
    }).then( res => {
      next()
    })
  })
  router.afterEach(( to, from ) => {
    wxShare({ title: to.meta.title, desc: to.meta.shareDesc, link: to.meta.shareLink, logo: to.meta.shareLogo})
   })
}

Dieses Projekt verknüpft die WeChat-Informationen des Benutzers mit den Benutzerinformationen dieser Website, wenn der Benutzer zum ersten Mal eine Verbindung zu WeChat herstellt. Daher kann der Benutzer nach Erhalt der WeChat-Autorisierungsinformationen des Benutzers ein Token erhalten, um die anderen Informationen des Benutzers zu erhalten Benutzerinformationen auf dieser Website.

Verarbeitungsvorgänge, für die Berechtigungen ohne Anmeldeseite erforderlich sind

Gemäß der obigen Logik wurde nach Eingabe der Whitelist die gesamte Funktion Wenn Wenn Sie es zurücksenden, wird der folgende Authentifizierungsprozess nicht durchgeführt. Wenn jedoch auf einer solchen Seite ein Vorgang ausgeführt wird, für den eine Genehmigung erforderlich ist, muss der Autorisierungs-Anmeldevorgang ausgelöst werden und nach der Autorisierung müssen die Benutzerinformationen zusammen abgerufen werden.

// checkLogin.js
export function checkLogin({ redirectUrl, wxAuthLoading, wxAuthLoaded, callback } = {}) {
  if (getToken()) {
    // ...
    callback && callback()
  } else {
    // 提示用户正在授权中
    wxAuthLoading && wxAuthLoading()
    getWechatAuth( redirectUrl || window.location.href ).then( res => {
      // 授权完毕,提示用户授权成功
      wxAuthLoaded && wxAuthLoaded()
    })
  }
}

Gleichzeitig müssen wir einige Vorgänge zur Routing-Whitelist hinzufügen

// routerRule.js
export default function routerRule (router, whiteList = []) {
  // other codes...
  router.beforeEach( (to, from, next ) => {
    // 因为授权登录涉及异步操作,因此使用promise,成功的回调中调用next函数
    new Promise((resolve, rejects) => {
      if ( whiteListRouter.indexOf(to.path) !== -1 ) {
        // 如果已经进行微信授权但是没有token值的,就调用以下函数获取token值
        if ( !hasToken() && hasAuthed() ) {
          getWechatUserInfo().then(res => {
            resolve()
          })
        }
        resolve()
        return
       }
      // 常规页面授权登录过程
      if (hasToken()) {
        // codes,获取用户信息并且跳转所需跳转的页面
      } else {
        // 判断用户是否已经进行微信授权
        if (hasAuthed()) {
          // 进行过微信授权之后,重定向回来的url中包含了微信的授权信息,可以将url上截取的参数发送到服务器,换取用户的token,随后进入上述有token时候的步骤
          getWechatUserInfo().then(res => {
            resolve()
          })
        } else {
          // 用户尚未进行微信授权,则调用微信授权的方法,进行授权登录。
          getWechatAuth()
        }
      }
    }).then( res => {
      next()
    })
  })
  // other codes...
}

Die Fallstricke und Unvollkommenheiten

1. Bei dieser Lösung müssen nach der Benutzerautorisierung vor dem Routing-Sprung Benutzerinformationen abgerufen werden, andernfalls gehen die WeChat-Autorisierungsinformationen auf der URL verloren und das Abrufen der Benutzerinformationen schlägt fehl.

2. Der Nachteil dieser Lösung besteht darin, dass der Entwickler die checkLogin-Beurteilung für alle erlaubnispflichtigen Vorgänge auf der Seite ohne Anmeldung hinzufügen muss. Da dieser berechtigungspflichtige Vorgang im Allgemeinen das Senden asynchroner Anforderungen umfasst, können Sie, wenn Sie nicht erwägen, unnötige asynchrone Anforderungen zu reduzieren, einen Interceptor für die Anforderungsmethode festlegen, um den vom Backend zurückgegebenen Code zu ermitteln. Wenn der Benutzer dies nicht getan hat Wenn Sie sich mit dem Code anmelden, wird die WeChat-Autorisierung durchgeführt. Dieser Ansatz ist im Entwicklungsprozess praktischer, sendet jedoch einige unnötige Anforderungen an das Backend, wenn der Benutzer nicht angemeldet ist, was nicht gut ist.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Das Vue-Projekt wird gepackt und an den Server gesendet

JS-Implementierung einer einfachen Warenkorbfunktion Code-Analyse

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine autorisierte On-Demand-Anmeldung für das Vue WeChat-Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
JavaScript -Engines: Implementierungen vergleichenJavaScript -Engines: Implementierungen vergleichenApr 13, 2025 am 12:05 AM

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Jenseits des Browsers: JavaScript in der realen WeltJenseits des Browsers: JavaScript in der realen WeltApr 12, 2025 am 12:06 AM

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Erstellen einer SaaS-Anwendung mit mehreren Mietern mit Next.js (Backend Integration)Erstellen einer SaaS-Anwendung mit mehreren Mietern mit Next.js (Backend Integration)Apr 11, 2025 am 08:23 AM

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

So erstellen Sie eine SaaS-Anwendung mit mehreren Mietern mit Next.js (Frontend Integration)So erstellen Sie eine SaaS-Anwendung mit mehreren Mietern mit Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

JavaScript: Erforschung der Vielseitigkeit einer WebspracheJavaScript: Erforschung der Vielseitigkeit einer WebspracheApr 11, 2025 am 12:01 AM

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Die Entwicklung von JavaScript: Aktuelle Trends und ZukunftsaussichtenDie Entwicklung von JavaScript: Aktuelle Trends und ZukunftsaussichtenApr 10, 2025 am 09:33 AM

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

Entmystifizieren JavaScript: Was es tut und warum es wichtig istEntmystifizieren JavaScript: Was es tut und warum es wichtig istApr 09, 2025 am 12:07 AM

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Ist Python oder JavaScript besser?Ist Python oder JavaScript besser?Apr 06, 2025 am 12:14 AM

Python eignet sich besser für Datenwissenschaft und maschinelles Lernen, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python ist bekannt für seine prägnante Syntax- und Rich -Bibliotheks -Ökosystems und ist für die Datenanalyse und die Webentwicklung geeignet. 2. JavaScript ist der Kern der Front-End-Entwicklung. Node.js unterstützt die serverseitige Programmierung und eignet sich für die Entwicklung der Vollstapel.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)