我和vue在拉雷维尔做水疗。js、vuex和vue路由器。我在我的商店里做了一个登录操作,但是当我用无效的凭证登录时,一些非常奇怪的事情发生了。当我使用正确的凭据登录时,它可以正常工作。
所以它调试了以下内容
登录
应用程序。js:279帖子http://127.0.0.1:8000/api/auth/login401(未经授权)
应用程序。js:58018登录成功
app.js:58023登录失败
应用程序。js:43201未捕获(promise中)NavigationDuplicated{u name:“NavigationDuplicated”,name:“NavigationDuplicated”,消息:“不允许导航到当前位置(“/”),堆栈:“错误”↵ 在新的NavigationDuplicated(http://127.…)↵ 在http://127.0.0.1:8000/js/app.js:57159:12“}消息:“不允许导航到当前位置(“/”)名称:“NavigationDuplicated”_名称:“NavigationDuplicated”堆栈:“错误”↵ 在新的NavigationDuplicated(http://127.0.0.1:8000/js/app.js:43124:14)↵ 在HTML5历史上。确认转换(http://127.0.0.1:8000/js/app.js:43240:18)↵ 在HTML5历史上。过渡到(http://127.0.0.1:8000/js/app.js:43184:8)↵<在HTML5历史上。推(http://127.0.0.1:8000/js/app.js:43515:10)↵ 在http://127.0.0.1:8000/js/app.js:43929:22↵ 在新的promise()↵ 在VueRouter。推(http://127.0.0.1:8000/js/app.js:43928:12)↵ 在http://127.0.0.1:8000/js/app.js:57159:12“proto:错误
对我来说,最疯狂的事情是,promise进入了现实。然后()和控制台。记录“登录成功”?它永远不应该进监狱。那好吧?因为凭证是错误的,所以它应该只针对。catch()。但更奇怪的是,它没有调试第二个控制台。在中记录(response.data)。然后呢????此外,我不理解重复的导航。
凭证只是一个{username,password}。我使用的是JWT,而/login路径会导致标准的JWT authcontroller登录方法。
login.vue成分法
methods: {
login() {
this.$store
.dispatch("tryLogin", this.form)
.then(response => {
this.$router.push({ path: "/home" });
})
.catch(error => {
this.logginError = error;
});
}
}
商店行动
tryLogin(context, credentials) {
context.commit("login");
console.log("login");
return new Promise((resolve, reject) => {
axios
.post("/api/auth/login", credentials)
.then(response => {
console.log("login succes");
console.log(response.data);
context.commit("loginSucces", response.data);
resolve(response.data);
})
.catch(error => {
console.log("login failed");
context.commit("loginFailed", error);
reject(error);
});
});
}
AuthController登录功能
/**
* Get a JWT via given credentials.
*
* @return \Illuminate\Http\JsonResponse
*/
public function login()
{
$credentials = request(['email', 'password']);
if (!$token = auth('api')->attempt($credentials)) {
return response()->json(['error' => 'Unauthorized'], 401);
}
return $this->respondWithToken($token);
}
好的,我将尝试解释(对不起,我的英语)以下操作正常,当您使用错误的凭据登录时,它将返回一个很好的JSON响应:
if (!$token = auth('api')->attempt($credentials)) {
return response()->json(['error' => 'Unauthorized'], 401);
}
这不是失败,因此它进入。然后
打印401(未经授权)
然后打印控制台。登录(“登录成功”),然后当它尝试调用上下文时。提交(“loginSucces”,response.data);它失败了,将转到catch并说应用程序。js:58023
登录失败。
只需在中询问即可解决此问题。然后
axios
.post("/api/auth/login", credentials)
.then(response => {
if (response.data.status === "error") {
console.log(response.data);
}
else{
context.commit("loginSucces", response.data);
resolve(response.data);
}
})
本文向大家介绍什么是Promise?相关面试题,主要包含被问及什么是Promise?时的应答技巧和注意事项,需要的朋友参考一下 Promise可以帮助我们更好地处理异步操作。下面的实例中,100ms后会打印result字符串。catch用于错误处理。多个Promise可以链接起来。
错误:第 1 行的解析错误:函数搜索(sour ^ 期望“字符串”、“数字”、“空”、“真”、“假”、“{”、“[”,得到“未定义” 代码:
当使用JavaScript读取API从服务器请求时,您必须执行以下操作 这里,
使用TomCat为网站提供服务。通常,当我更新网站时,Chrome会对缓存感到困惑,并继续使用缓存中的旧页面,即使新的页面可用。这似乎是基于一个更基本的问题,Chrome也没有从服务器获得最新的响应头,这似乎阻止了任何控制缓存的能力。 我选择了一个javascript文件,做了一个小的修改来更改文件系统中文件的日期。然后我用Mozilla和Chrome重新蚀刻了页面。Mozilla似乎运行正常:服
本文向大家介绍Proxy是什么,有什么应用场景?相关面试题,主要包含被问及Proxy是什么,有什么应用场景?时的应答技巧和注意事项,需要的朋友参考一下 Proxy做数据劫持用的,和Object.defineProperty类似 可以直接监听对象,而非其属性 不过功能更强大,能监听数组,包含get, set, has, defineProperty, has, deleteProperty等十三个强
本文向大家介绍Reflect是什么,有什么应用场景?相关面试题,主要包含被问及Reflect是什么,有什么应用场景?时的应答技巧和注意事项,需要的朋友参考一下 1.将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。 修改某些Object方法的返回结果,让其变得更合理。比如,Object.defineProperty(obj,