Inhaltsverzeichnis
1. Token-Anmeldeauthentifizierung
2. Was ist ein Doppel-Token?
npm install koa-generator -g
Nach dem Login kopieren
" >
npm install koa-generator -g
Nach dem Login kopieren
koa2 server
Nach dem Login kopieren
" >
koa2 server
Nach dem Login kopieren
1. Vue3+Vite-Framework
Installieren Sie axios
Heim Web-Frontend View.js Wie Vue3+Vite zwei Token verwendet, um eine sinnlose Aktualisierung zu erreichen

Wie Vue3+Vite zwei Token verwendet, um eine sinnlose Aktualisierung zu erreichen

May 10, 2023 pm 01:10 PM
vue3 vite token

1. Token-Anmeldeauthentifizierung

jwt: JSON Web Token. Dabei handelt es sich um ein Authentifizierungsprotokoll, das im Allgemeinen zur Überprüfung der angeforderten Identitätsinformationen und Identitätsberechtigungen verwendet wird. Besteht aus drei Teilen: Header, Hayload, Signatur

Header: Das heißt, Header-Informationen, die die grundlegenden Informationen zur Beschreibung dieses Tokens sind, JSON-Format

{
  "alg": "HS256", // 表示签名的算法,默认是 HMAC SHA256(写成 HS256)
  "type": "JWT" // 表示Token的类型,JWT 令牌统一写为JWT
}
Nach dem Login kopieren

Payload: Payload, bei der es sich auch um ein JSON-Objekt handelt, das zum Speichern der tatsächlichen Daten verwendet wird das muss übermittelt werden. Es wird nicht empfohlen, vertrauliche Informationen wie Passwörter zu speichern.

{
  "iss": "a.com", // 签发人
  "exp": "1d", // expiration time 过期时间
  "sub": "test", // 主题
  "aud": "", // 受众
  "nbf": "", // Not Before 生效时间
  "iat": "", // Issued At 签发时间
  "jti": "", // JWT ID 编号
  // 可以定义私有字段
  "name": "",
  "admin": ""
}
Nach dem Login kopieren

Signatur ist eine Signatur der ersten beiden Teile, um zu verhindern, dass Daten manipuliert werden. Es muss ein Schlüssel angegeben werden. Dieser Schlüssel ist nur dem Server bekannt und kann nicht weitergegeben werden. Verwenden Sie den im Header angegebenen Signaturalgorithmus, um eine Signatur gemäß der Formel zu generieren.

Fügen Sie nach der Berechnung der Signatur die drei Teile Header, Payload und Signatur zu einer Zeichenfolge zusammen und trennen Sie jeden Teil durch . Dadurch wird ein Token generiert

2. Was ist ein Doppel-Token?

  • Doppelter Token-Verifizierungsmechanismus, bei dem AccessToken eine kürzere Ablaufzeit und RefreshToken eine längere Ablaufzeit hat. Wenn das AccessToken abläuft, fordern Sie mit RefreshToken ein neues Token an. accessToken:用户获取数据权限

  • refreshToken

    Doppelter Token-Verifizierungsprozess

Der Benutzer meldet sich an und sendet das Kontokennwort an den Server. Wenn die Anmeldung fehlschlägt, kehren Sie zum Client zurück, um sich erneut anzumelden. Nach erfolgreicher Anmeldung generiert der Server ein AccessToken und ein RefreshToken und gibt das generierte Token an den Client zurück.

  • Im Anforderungs-Interceptor trägt der Anforderungsheader die AccessToken-Anforderungsdaten und der Server überprüft, ob das AccessToken abgelaufen ist. Wenn das Token gültig ist, fordern Sie weiterhin Daten an. Wenn das Token ungültig ist, werden Informationen zur Ungültigkeit an den Client zurückgegeben.

  • Der Client empfängt die vom Server gesendeten Anforderungsinformationen und stellt fest, ob im doppelt gekapselten Axios-Antwort-Interceptor Informationen zur AccessToken-Ungültigmachung vorhanden sind, es werden jedoch keine Antwortdaten zurückgegeben. Wenn ungültige Informationen vorhanden sind, fordern Sie mit RefreshToken ein neues AccessToken an.

  • Der Server überprüft, ob das RefreshToken gültig ist. Wenn es gültig ist, wird das Token neu generiert und die neuen Token- und Eingabeaufforderungsinformationen werden an den Client zurückgegeben. Wenn es ungültig ist, werden ungültige Informationen an den Client zurückgegeben.

  • Der Client-Antwort-Interceptor bestimmt, ob die Antwortinformationen über ein gültiges oder ungültiges RefreshToken verfügen. Ungültig, melden Sie sich von der aktuellen Anmeldung ab. Gültig, speichern Sie das neue Token erneut und fordern Sie weiterhin die Daten der letzten Anfrage an.

  • Hinweise

Der Server lehnt die Anfrage ab und gibt die Informationen zur Token-Ungültigmachung zurück auffrischen.

  • Server-Whitelist, das Token wurde vor erfolgreicher Anmeldung nicht angefordert. Wenn der Server die Anfrage also abfängt, können Sie sich nicht anmelden. Passen Sie die Whitelist so an, dass für die Anmeldung keine Token-Verifizierung erforderlich ist.

  • 3. Servercode

    1. Koa-Server erstellen
Koa-Gerüst global installieren

npm install koa-generator -g
Nach dem Login kopieren

Erstellen Sie den Server direkt koa2+ Projektname

koa2 server
Nach dem Login kopieren

cd-Server und geben Sie das Projekt ein, um jwt zu installieren

npm i jsonwebtoken
Nach dem Login kopieren

im Dienst Verwenden Sie am Ende koa-cors domänenübergreifend.

npm i koa-cors
Nach dem Login kopieren

Führen Sie Anwendungs-Cors in app.js ein Die direkte Verwendung von Gerüsten ist bereits in der App enthalten. .js verwendet Routing-Middleware, um eine Schnittstelle in router/index.js

const cors=require('koa-cors')
...
app.use(cors())
Nach dem Login kopieren

4 zu erstellen Wenn Sie nur eine einfache Doppel-Token-Überprüfung durchführen, sind viele Middlewares nicht erforderlich, z. B. das Parsen statischer Ressourcen. Um jedoch Zeit und Komfort zu sparen, habe ich direkt das Gerüst koa2 verwendet.

Endgültige Verzeichnisstruktur:

IV. Frontend-Code

1. Vue3+Vite-Framework

Das Frontend verwendet das Vue3+Vite-Framework, es hängt von den persönlichen Nutzungsgewohnheiten ab.

const jwt=require('jsonwebtoken')

const secret='2023F_Ycb/wp_sd'  // 密钥
/*
expiresIn:5 过期时间,时间单位是秒
也可以这么写 expiresIn:1d 代表一天 
1h 代表一小时
*/
// 本次是为了测试,所以设置时间 短token5秒 长token15秒
const accessTokenTime=5  
const refreshTokenTime=15 

// 生成accessToken
const setAccessToken=(payload={})=>{  // payload 携带用户信息
    return jwt.sign(payload,secret,{expireIn:accessTokenTime})
}
//生成refreshToken
const setRefreshToken=(payload={})=>{
    return jwt.sign(payload,secret,{expireIn:refreshTokenTime})
}

module.exports={
    secret,
    setAccessToken,
    setRefreshToken
}
Nach dem Login kopieren

Installieren Sie axios

const router = require('koa-router')()
const jwt = require('jsonwebtoken')
const { getAccesstoken, getRefreshtoken, secret }=require('../utils/token')

/*登录接口*/
router.get('/login',()=>{
    let code,msg,data=null
    code=2000
    msg='登录成功,获取到token'
    data={
        accessToken:getAccessToken(),
        refreshToken:getReferToken()
    }
    ctx.body={
        code,
        msg,
        data
    }
})

/*用于测试的获取数据接口*/
router.get('/getTestData',(ctx)=>{
    let code,msg,data=null
    code=2000
    msg='获取数据成功'
    ctx.body={
        code,
        msg,
        data
    }
})

/*验证长token是否有效,刷新短token
  这里要注意,在刷新短token的时候回也返回新的长token,延续长token,
  这样活跃用户在持续操作过程中不会被迫退出登录。长时间无操作的非活
  跃用户长token过期重新登录
*/
router.get('/refresh',(ctx)=>{
    let code,msg,data=null
    //获取请求头中携带的长token
    let r_tk=ctx.request.headers['pass']
    //解析token 参数 token 密钥 回调函数返回信息
    jwt.verify(r_tk,secret,(error)=>{
        if(error){
            code=4006,
            msg='长token无效,请重新登录'
        } else{
            code=2000,
            msg='长token有效,返回新的token',
            data={
                accessToken:getAccessToken(),
                refreshToken:getReferToken()
            }
        }
    })
})
Nach dem Login kopieren

2. Definieren Sie die verwendeten Konstanten

config/constants.js

const { secret } = require('./token')
const jwt = require('jsonwebtoken')

/*白名单,登录、刷新短token不受限制,也就不用token验证*/
const whiteList=['/login','/refresh']
const isWhiteList=(url,whiteList)=>{
        return whiteList.find(item => item === url) ? true : false
}

/*中间件
 验证短token是否有效
*/
const cuth = async (ctx,next)=>{
    let code, msg, data = null
    let url = ctx.path
    if(isWhiteList(url,whiteList)){
        // 执行下一步
        return await next()
    } else {
        // 获取请求头携带的短token
        const a_tk=ctx.request.headers['authorization']
        if(!a_tk){
            code=4003
            msg='accessToken无效,无权限'
            ctx.body={
                code,
                msg,
                data
            }
        } else{
            // 解析token
            await jwt.verify(a_tk,secret.(error)=>{
                if(error)=>{
                      code=4003
                      msg='accessToken无效,无权限'
                      ctx.body={
                          code,
                          msg,
                          datta
                      }
                } else {
                    // token有效
                    return await next()
                }
            })
        }
    }
}
module.exports=auth
Nach dem Login kopieren

3. Speichern und rufen Sie abgelaufene Anforderungen auf

Wichtiger Punkt: Verwenden Sie Promise, um Anforderungen mit abgelaufenen Token in einem Array zu speichern Ausstehender Status, d. h. nicht „resolve()“ aufrufen. Wenn ein neues Token erhalten wird, fordern Sie es erneut an. utils/refresh.js

const auth=requier(./utils/auth)
···
app.use(auth)
Nach dem Login kopieren

4. Kapseln Sie axios/server.jsWie Vue3+Vite zwei Token verwendet, um eine sinnlose Aktualisierung zu erreichen

npm init vite@latest client_side
Nach dem Login kopieren

5. Kapselung wiederverwenden

npm i axios
Nach dem Login kopieren
Projekt läuft

Führen Sie abschließend das Projekt aus und überprüfen Sie die Wirkung des im Backend festgelegten kurzen Tokens für 5 Sekunden und des langen Tokens für 10 Sekunden. Nachdem die Anmeldeanforderung das Token erreicht hat, können die Anforderungsdaten normal angefordert werden. Wenn die Anforderung nach fünf Sekunden erneut gestellt wird, wird das lange Token ungültig , wird die Refresh-Schnittstelle nur einmal aufgerufen. Nach Ablauf des langen Tokens müssen Sie sich erneut anmelden.

Das obige ist der detaillierte Inhalt vonWie Vue3+Vite zwei Token verwendet, um eine sinnlose Aktualisierung zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

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 vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vue3+TS+Vite-Entwicklungsfähigkeiten: So optimieren Sie SEO Vue3+TS+Vite-Entwicklungsfähigkeiten: So optimieren Sie SEO Sep 10, 2023 pm 07:33 PM

Vue3+TS+Vite-Entwicklungsfähigkeiten: So führen Sie eine SEO-Optimierung durch SEO (SearchEngineOptimization) bezieht sich auf die Optimierung der Struktur, des Inhalts und der Schlüsselwörter der Website, um sie in Suchmaschinen höher zu platzieren und dadurch den Traffic und die Präsenz der Website zu erhöhen. Bei der Entwicklung moderner Frontend-Technologien wie Vue3+TS+Vite ist die Optimierung von SEO ein sehr wichtiges Thema. In diesem Artikel werden einige hilfreiche Vue3+TS+Vite-Entwicklungstechniken und -methoden vorgestellt

vue3+vite: So beheben Sie den Fehler bei der Verwendung von require zum dynamischen Importieren von Bildern in src vue3+vite: So beheben Sie den Fehler bei der Verwendung von require zum dynamischen Importieren von Bildern in src May 21, 2023 pm 03:16 PM

vue3+vite:src verwendet „require“, um Bilder dynamisch zu importieren, und vue3+vite importiert dynamisch mehrere Bilder. Wenn Sie „requireisnotdefined“ verwenden, wird eine Fehlermeldung angezeigt like vue2 like imgUrl:require(' .../assets/test.png') wird importiert, da Typescript Require nicht unterstützt, daher wird Import verwendet. So lösen Sie das Problem: Verwenden Sieawaitimport

So aktualisieren Sie einen Teilinhalt der Seite in Vue3 So aktualisieren Sie einen Teilinhalt der Seite in Vue3 May 26, 2023 pm 05:31 PM

Um eine teilweise Aktualisierung der Seite zu erreichen, müssen wir nur das erneute Rendern der lokalen Komponente (dom) implementieren. In Vue lässt sich dieser Effekt am einfachsten mit der v-if-Direktive erzielen. In Vue2 können wir zusätzlich zur Verwendung der v-if-Anweisung zum erneuten Rendern des lokalen Doms auch eine neue leere Komponente erstellen. Wenn wir die lokale Seite aktualisieren müssen, springen wir zu dieser leeren Komponentenseite und springen dann wieder hinein der beforeRouteEnter-Schutz in der leeren Komponente. Wie in der Abbildung unten gezeigt, wie man in Vue3.X auf die Schaltfläche „Aktualisieren“ klickt, um das DOM im roten Feld neu zu laden und den entsprechenden Ladestatus anzuzeigen. Da der Guard in der Komponente in der scriptsetup-Syntax in Vue3.X nur o hat

Vue3+TS+Vite-Entwicklungsfähigkeiten: So optimieren Sie domänenübergreifende Anfragen und Netzwerkanfragen Vue3+TS+Vite-Entwicklungsfähigkeiten: So optimieren Sie domänenübergreifende Anfragen und Netzwerkanfragen Sep 09, 2023 pm 04:40 PM

Vue3+TS+Vite-Entwicklungsfähigkeiten: So optimieren Sie domänenübergreifende Anfragen und Netzwerkanfragen Einführung: In der Front-End-Entwicklung sind Netzwerkanfragen ein sehr häufiger Vorgang. Wie wir Netzwerkanfragen optimieren können, um die Seitenladegeschwindigkeit und das Benutzererlebnis zu verbessern, ist eines der Themen, über die unsere Entwickler nachdenken müssen. Gleichzeitig müssen wir in einigen Szenarien, in denen Anforderungen an verschiedene Domänennamen gesendet werden müssen, domänenübergreifende Probleme lösen. In diesem Artikel wird vorgestellt, wie Sie in der Vue3+TS+Vite-Entwicklungsumgebung domänenübergreifende Anforderungen und Techniken zur Optimierung von Netzwerkanforderungen stellen. 1. Lösung für domänenübergreifende Anfragen

Was tun, wenn das Login-Token ungültig ist? Was tun, wenn das Login-Token ungültig ist? Sep 14, 2023 am 11:33 AM

Zu den Lösungen für ungültige Login-Tokens gehören die Überprüfung, ob das Token abgelaufen ist, die Überprüfung, ob das Token korrekt ist, die Überprüfung, ob das Token manipuliert wurde, die Überprüfung, ob das Token mit dem Benutzer übereinstimmt, das Löschen des Caches oder der Cookies sowie die Überprüfung der Netzwerkverbindung und des Serverstatus , sich erneut anmelden oder ein neues Token anfordern usw. Detaillierte Einführung: 1. Überprüfen Sie, ob das Token abgelaufen ist. Sobald die Gültigkeitsdauer überschritten ist, wird das Anmelde-Token als ungültig betrachtet.

Vue3+TS+Vite-Entwicklungsfähigkeiten: So verschlüsseln und speichern Sie Daten Vue3+TS+Vite-Entwicklungsfähigkeiten: So verschlüsseln und speichern Sie Daten Sep 10, 2023 pm 04:51 PM

Vue3+TS+Vite-Entwicklungstipps: So verschlüsseln und speichern Sie Daten Mit der rasanten Entwicklung der Internettechnologie werden Datensicherheit und Datenschutz immer wichtiger. In der Vue3+TS+Vite-Entwicklungsumgebung ist die Verschlüsselung und Speicherung von Daten ein Problem, mit dem sich jeder Entwickler auseinandersetzen muss. In diesem Artikel werden einige gängige Techniken zur Datenverschlüsselung und -speicherung vorgestellt, um Entwicklern dabei zu helfen, die Anwendungssicherheit und das Benutzererlebnis zu verbessern. 1. Datenverschlüsselung Front-End-Datenverschlüsselung Die Front-End-Verschlüsselung ist ein wichtiger Bestandteil des Schutzes der Datensicherheit. Häufig verwendet

Vue3+TS+Vite-Entwicklungsfähigkeiten: So führen Sie einen Front-End-Sicherheitsschutz durch Vue3+TS+Vite-Entwicklungsfähigkeiten: So führen Sie einen Front-End-Sicherheitsschutz durch Sep 09, 2023 pm 04:19 PM

Vue3+TS+Vite-Entwicklungsfähigkeiten: So führen Sie den Front-End-Sicherheitsschutz durch. Mit der kontinuierlichen Weiterentwicklung der Front-End-Technologie beginnen immer mehr Unternehmen und Einzelpersonen, Vue3+TS+Vite für die Front-End-Entwicklung zu verwenden. Allerdings haben auch die damit verbundenen Sicherheitsrisiken die Aufmerksamkeit der Menschen auf sich gezogen. In diesem Artikel besprechen wir einige häufige Front-End-Sicherheitsprobleme und geben einige Tipps zum Schutz der Front-End-Sicherheit während des Entwicklungsprozesses von Vue3+TS+Vite. Eingabevalidierung Benutzereingaben sind oft eine der Hauptquellen für Front-End-Sicherheitslücken. existieren

So lösen Sie das Problem eines ungültigen Anmeldetokens So lösen Sie das Problem eines ungültigen Anmeldetokens Sep 14, 2023 am 10:57 AM

Das Problem eines ungültigen Anmeldetokens kann gelöst werden, indem die Netzwerkverbindung überprüft, die Gültigkeitsdauer des Tokens überprüft, Cache und Cookies geleert, der Anmeldestatus überprüft, der Anwendungsentwickler kontaktiert und die Kontosicherheit erhöht wird. Detaillierte Einführung: 1. Überprüfen Sie die Netzwerkverbindung, stellen Sie die Verbindung zum Netzwerk wieder her oder ändern Sie die Netzwerkumgebung. 2. Überprüfen Sie die Gültigkeitsdauer des Tokens, besorgen Sie sich ein neues Token oder wenden Sie sich an den Entwickler der Anwendung. 3. Löschen Sie den Cache und die Cookies, löschen Sie den Browser Cache und Cookie und melden Sie sich dann erneut bei der Anwendung an. 4. Überprüfen Sie den Anmeldestatus.

See all articles