Vollständiger Vue-Code zur Implementierung der Single-Sign-On-Steuerung

Vollständiger Vue-Code zur Implementierung der Single-Sign-On-Steuerung

Hier ist zu Ihrer Information eine Vue-Single-Sign-On-Demo. Ich hoffe, sie ist für alle hilfreich, die mehr wissen möchten. Das spezifische Prinzip finden Sie in meinem vorherigen Artikel

Es gibt N Möglichkeiten, Single Sign-On in Vue zu implementieren. Hier gibt es zwei Systeme. Eines ist das Hauptende des Anmeldesystems. Der Anmeldevorgang aller unserer Subsysteme oder verwandten Systeme wird hier abgeschlossen.

Der spezifische Code lautet wie folgt: login.vue

<Vorlage>
  <div Klasse="hallo">
    <h1>{{ msg }}</h1>
    <button @click="handleLogin">Klicken, um sich anzumelden</button>
    <button @click="rethome">Zur vorherigen Seite zurückkehren</button>
  </div>
</Vorlage>
 
<Skript>
Cookies aus „js-cookie“ importieren
Standard exportieren {
  Name: 'Heimat',
  Daten () {
    zurückkehren {
      msg: 'System 1: einheitliche Anmeldeseite',
    }
  },
  montiert(){
    const token = Cookies.get('app.token');
    wenn(Token){
      dies.rethome();
    }
  },
  Methoden: {
        handleLogin() {
        var token = this.randomString();
        Cookies.set('app.token',token, { expires: 1000, path: '/',domain: '.xxx,com' }) //Schreiben Sie den Hauptdomänennamen Ihrer Website if(Cookies.get('app.returl')){
          Cookies.set('app.loginname','System 2', { expires: 1000, path: '/',domain: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer Website}else{
          Cookies.set('app.loginname','System 1', { expires: 1000, path: '/',domain: '.xxx,com' }) //Schreiben Sie den Hauptdomänennamen Ihrer Website}
        dies.rethome();
    },
    zurückkehren(){
      var returl = Cookies.get('app.returl');
        wenn(returl){
          Cookies.set('app.returl','', { expires: 1000, path: '/',domain: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer Website window.open(returl,"_parent");
        }anders{
          dies.$router.push("/");
        }
    },
    Zufallszeichenfolge(e) {
        e = e || 32;
        var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",
        a = t.Länge,
        n = "";
        für (var i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a));
        Rückkehr Substantiv, maskulin—
    }
    }
}
</Skript>
 
<!-- Fügen Sie das Attribut „scoped“ hinzu, um CSS nur auf diese Komponente zu beschränken -->
<Stilbereich>
h1, h2 {
  Schriftstärke: normal;
}
ul {
  Listenstiltyp: keiner;
  Polsterung: 0;
}
li {
  Anzeige: Inline-Block;
  Rand: 0 10px;
}
A {
  Farbe: #42b983;
}
</Stil>

Startseite

<Vorlage>
  <div Klasse="hallo">
    <h1>{{ msg }}</h1>
    <h3>Benutzerinformationen: {{token}}</h3>
    <h3>Anmeldeort: {{loginname}}</h3>
    <button @click="logout">Abmelden</button>
  </div>
</Vorlage>
 
<Skript>
Cookies aus „js-cookie“ importieren
 
Standard exportieren {
  Name: 'Heimat',
  Daten () {
    zurückkehren {
      msg: 'System 1 Hauptseite',
      Token:'',
      Anmeldename:''
    }
  },
  montiert(){
    const token = Cookies.get('app.token');
    dieses.token = token;
    const loginname = Cookies.get('app.loginname');
    this.loginname = Anmeldename;
    konsole.log(token);
    wenn(!token){
      dies.$router.push("/login");
    }anders{
      dies.rehome()
    }
  },
  Methoden: {
    Abmelden(){
        Cookies.set('app.token','', { expires: 1000, path: '/',domain: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer WebsiteCookies.set('app.loginname','', { expires: 1000, path: '/',domain: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer Websitethis.$router.go(0)
    },
    zurückkehren(){
      var returl = Cookies.get('app.returl');
        wenn(returl){
          Cookies.set('app.returl','', { expires: 1000, path: '/',domain: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer Website window.open(returl,"_parent");
        }anders{
        }
    },
  }
}
</Skript>
 
<!-- Fügen Sie das Attribut „scoped“ hinzu, um CSS nur auf diese Komponente zu beschränken -->
<Stilbereich>
h1, h2 {
  Schriftstärke: normal;
}
ul {
  Listenstiltyp: keiner;
  Polsterung: 0;
}
li {
  Anzeige: Inline-Block;
  Rand: 0 10px;
}
A {
  Farbe: #42b983;
}
</Stil>

Nach der Anmeldung am System haben wir die Hälfte der Schritte abgeschlossen. Der nächste Schritt besteht darin, Komponenten zu erstellen und Methoden auf der aufrufenden Seite aufzurufen. Hier zeige ich Ihnen meinen Fallsteuerungscode.

<Vorlage>
  <div class="hallo" v-show="false">
  </div>
</Vorlage>
 
<Skript>
Cookies aus „js-cookie“ importieren
Standard exportieren {
  Requisiten:{
        Typ:{
            Typ: Zeichenfolge,
            Standard: „Daten abrufen“
    }
  },
  Name: 'Heimat',
  Daten () {
    zurückkehren {
      Token:'',
      Anmeldename:''
    }
  },
  montiert(){
    const token = Cookies.get('app.token');
    this.token = token?token:'Nicht angemeldet';
    const loginname = Cookies.get('app.loginname');
    this.loginname = loginname?loginname:'Nicht angemeldet';
    dies.returnFun()
  },
  Methoden: {
        RückkehrSpaß(){
      var Daten = {
        Token:dieses.Token,
        Anmeldename:dieser.Anmeldename
      }
      dies.$emit("clickFun",data);
    }
  },
  betrachten:
      'Typ': Funktion (Wert) {
        const token = Cookies.get('app.token');
        this.token = token?token:'Nicht angemeldet';
        const loginname = Cookies.get('app.loginname');
        this.loginname = loginname?loginname:'Nicht angemeldet';
        Schalter(Wert){
          Fall 'Anmelden':
          konsole.log(token);
          wenn(Token != ''){
            dies.returnFun();
          }anders{
            Cookies.set('app.returl','Lokale Route', { läuft ab: 1000, Pfad: '/',Domäne: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer Website window.open('Adresse des Anmeldesystems',"_parent");
          }
          brechen;
          Fall 'Abmelden':
          Cookies.set('app.token','', { expires: 1000, path: '/',domain: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer Website Cookies.set('app.loginname','', { expires: 1000, path: '/',domain: '.xxx,com' })//Schreiben Sie den Hauptdomänennamen Ihrer Website;
          this.token = 'Nicht angemeldet';
          this.loginname = 'Nicht angemeldet';
          dies.returnFun();
          brechen;
          Fall 'getdata':
          dies.returnFun();
          brechen;
        }
      }
  }
}
</Skript>
 
<!-- Fügen Sie das Attribut „scoped“ hinzu, um CSS nur auf diese Komponente zu beschränken -->
<Stilbereich>
h1, h2 {
  Schriftstärke: normal;
}
ul {
  Listenstiltyp: keiner;
  Polsterung: 0;
}
li {
  Anzeige: Inline-Block;
  Rand: 0 10px;
}
A {
  Farbe: #42b983;
}
</Stil>

Das aufrufende Codebeispiel lautet wie folgt:

<Vorlage>
  <div Klasse="hallo">
    <login @clickFun="returnFun" :typ ="typ"></login>
    <h1>{{ msg }}</h1>
    <h3>Benutzerinformationen: {{token}}</h3>
    <h3>Anmeldeort: {{loginname}}</h3>
    <button @click="login">Anmelden</button>
    <button @click="logout">Abmelden</button>
  </div>
</Vorlage>
 
<Skript>
Cookies aus „js-cookie“ importieren
Login aus „@/pages/login“ importieren
 
Standard exportieren {
  Name: 'Heimat',
  Daten () {
    zurückkehren {
      msg: 'System 2: Übergeordnete Komponentenseite',
      token:'Nicht angemeldet',
      loginname:'Nicht angemeldet',
      Typ: 'Daten abrufen',
    }
  },
  montiert(){
  },
  Methoden: {
    Login(){
      dieser.Typ = "Anmelden";
    },
    Abmelden(){
      this.type = "Abmelden";
    },
    returnFun(Wert){
        console.log(Wert,"Rückgabewert der Unterkomponente")
                const token = Wert.Token;
        this.token = token?token:'Nicht angemeldet';
        const loginname = Wert.loginname;
        this.loginname = loginname?loginname:'Nicht angemeldet';
        }
  },
  Komponenten: {
            Login
    }
}
</Skript>
 
<!-- Fügen Sie das Attribut „scoped“ hinzu, um CSS nur auf diese Komponente zu beschränken -->
<Stilbereich>
h1, h2 {
  Schriftstärke: normal;
}
ul {
  Listenstiltyp: keiner;
  Polsterung: 0;
}
li {
  Anzeige: Inline-Block;
  Rand: 0 10px;
}
A {
  Farbe: #42b983;
}
</Stil>

An diesem Punkt ist der Aufbau eines einfachen Single Sign-On-Systems abgeschlossen. Sie können dieser Idee folgen, um weitere Verbesserungen vorzunehmen und schließlich die entsprechende Kontrolle vorzunehmen. Wenn es für Sie hilfreich ist, können Sie mir gerne folgen. Ich werde die technische Dokumentation regelmäßig aktualisieren, damit wir gemeinsam diskutieren und lernen und gemeinsam Fortschritte erzielen können.

Dies ist das Ende dieses Artikels über das Teilen des Vue Single Sign-On-Steuerungscodes. Weitere relevante Vue Single Sign-On-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Zusammenfassung der Möglichkeiten zur Implementierung von Single Sign-On in Vue
  • SpringBoot+Vue+Redis implementiert Single Sign-On (an einer Stelle anmelden und an einer anderen Stelle abmelden)
  • Verwenden Sie Springboot in Kombination mit Vue, um SSO Single Sign-On zu implementieren
  • Trennung von Front-End und Back-End von Vue + Springboot zur Realisierung einer domänenübergreifenden Single-Sign-On-Problemlösung

<<:  Nutzerbedürfnisse führen zu marketingorientiertem Design

>>:  Lösung für das Problem, dass Tomcat beim normalen Zugriff auf localhost eine 404-Meldung ausgibt

Artikel empfehlen

MySQL8.0.18-Konfiguration mehrerer Master und eines Slaves

Inhaltsverzeichnis 1. Realistischer Hintergrund 2...

Webdesign-Dimensionen und Regeln für die Werbegestaltung auf Webseiten

1. Unter 800 x 600 gibt es keine horizontale Bild...

So erstellen Sie https mit Nginx und dem kostenlosen Tencent Cloud-Zertifikat

Ich habe gelernt, wie man https bekommt. Kürzlich...

Beispiel zum Aktivieren langsamer Abfragen in MySQL

Vorwort Das langsame Abfrageprotokoll ist eine se...

Die Frontend-Entwicklung muss jeden Tag lernen, HTML-Tags zu verstehen (1)

2.1 Semantisierung sorgt dafür, dass Ihre Webseit...

30 hervorragende Beispiele für Farbabstimmung im Webdesign

Heute habe ich in diesem Artikel 30 hervorragende ...

Erstellen Sie ein privates Docker-Warehouse (selbstsignierte Methode)

Um die von uns erstellten Images zentral zu verwa...

Instanzmethode für MySQL-String-Verkettung und Festlegen von Nullwerten

#String-Verkettung concat(s1,s2); verkette die St...

11 Möglichkeiten, Duplikate aus JS-Arrays zu entfernen

Bei der tatsächlichen Arbeit oder bei Interviews ...

So fügen Sie Batchdaten unter Node.js in eine MySQL-Datenbank ein

Im Projekt (nodejs) müssen mehrere Daten gleichze...

So starten Sie eine Transaktion in MySQL

Vorwort In diesem Artikel wird hauptsächlich besc...

MYSQL Eine Frage zur Verwendung von Zeichenfunktionen zum Filtern von Daten

Problembeschreibung: Struktur: test hat zwei Feld...

Schreiben von Methoden, die in nativem JS verboten sein sollten

Inhaltsverzeichnis Funktionen auf Blockebene Ände...

Toolkit: Ein leistungsfähigeres Front-End-Framework als Bootstrap

Hinweis: Die derzeit beliebtesten Front-End-Frame...