JWT无法在Vuejs和Laravel的实时服务器上运行

时间:2018-10-14 06:07:02

标签: vue.js vuejs2 jwt vue-component vue-router

我正在使用SPA,我已将JWT身份验证用于登录系统。在本地服务器上,它的工作正常,我的意思是,当我单击登录时,我得到令牌等并存储在本地存储中,它将我重定向到仪表板,一切都非常完美。

enter image description here enter image description here

但是在实时服务器上,我得到了令牌,但是它没有将其存储在本地存储中。 我完全迷路了。我尝试了一切,但仍然尝试了。请帮我解决一下这个。 这是我第一次参加SPA,所以我不确定自己缺少什么。

登录方式

login(){
  User.login(this.form)
}

User.js

import Token from './Token'
import AppStorage from './AppStorage'

class User {
    login(data) {
        axios.post('/api/auth/login', data)
            .then(res => this.responseAfterLogin(res))
            .catch(error => console.log(error.response.data))
    }

    responseAfterLogin(res) {
        const access_token = res.data.access_token
        const username = res.data.user
        if (Token.isValid(access_token)) {
            AppStorage.store(username, access_token)
            window.location = '/me/dashboard'
        }
    }

    hasToken() {
        const storedToken = AppStorage.getToken();
        if (storedToken) {
            return Token.isValid(storedToken) ? true : this.logout()
        }
        return false
    }

    loggedIn() {
        return this.hasToken()
    }

    logout() {
        AppStorage.clear()
        window.location = '/me/login'
    }

    name() {
        if (this.loggedIn()) {
            return AppStorage.getUser()
        }
    }

    id() {
        if (this.loggedIn()) {
            const payload = Token.payload(AppStorage.getToken())
            return payload.sub
        }
    }

    own(id) {
        return this.id() == id
    }

    admin() {
        return this.id() == 1
    }

}

export default User = new User();

Token.js

class Token {


    isValid(token){
        const payload = this.payload(token);
        if(payload){
            return payload.iss == "http://127.0.0.1:8000/api/auth/login" ? true : false
        }

        return false
    }

    payload(token){
        const payload = token.split('.')[1]
        return this.decode(payload)
    }

    decode(payload){
        return JSON.parse(atob(payload))

    }



}

export default Token = new Token();

AppStorage.js

class AppStorage {    

    storeToken (token) {
        localStorage.setItem('token', token);
    }

    storeUser (user) {
        localStorage.setItem('user', user);
    }

    store (user, token) {
        this.storeToken(token)
        this.storeUser(user)
    }

    clear () {
        localStorage.removeItem('token')
        localStorage.removeItem('user')
    }

    getToken () {
        return localStorage.getItem('token')
    }

    getUser () {
        return localStorage.getItem('user')
    }

}


export default AppStorage = new AppStorage()

谢谢

0 个答案:

没有答案