拦截器重定向问题
来源:4-8 编码实战:快速实现访问鉴权接口+小结

阿斯顿_马丁
2019-04-01
老师你好,拦截器里写如下代码后
if len(username)<3||!IsTokenVaild(token){
//w.WriteHeader(http.StatusForbidden)
http.Redirect(w, r, "/static/view/signin.html", http.StatusFound)
return
}
我先正常登陆,没有问题了。然后清除浏览器数据,刷新页面,并没有跳转到登陆页面,这是什么原因呢?
写回答
3回答
-
拦截器方法:
func HTTPInterceptor(h http.HandlerFunc) http.HandlerFunc { return http.HandlerFunc( func(w http.ResponseWriter, r *http.Request) { r.ParseForm() username := r.Form.Get("username") token := r.Form.Get("token") //验证登录token是否有效 if len(username) < 3 || !IsTokenValid(token) { // token校验失败则跳转到直接返回失败提示 resp := util.NewRespMsg( int(common.StatusInvalidToken), "token无效", nil, ) w.Write(resp.JSONBytes()) return } h(w, r) }) }
home.html
$.ajax({ url: "/user/info?" + queryParams(), type: "POST", error: function (jqXHR, textStatus, errorThrown) { if (textStatus == "error") { alert(textStatus + " : " + errorThrown); } else { alert(textStatus); } }, success: function (body, textStatus, jqXHR) { var resp = JSON.parse(body); // 这里主动进行跳转 if (resp.code == 10005) { window.location.href = "/static/view/signin.html"; } document.getElementById("username").innerHTML = resp.data.Username; document.getElementById("regtime").innerHTML = resp.data.SignupAt; updateFileList(); } });
012019-04-02 -
阿斯顿_马丁
提问者
2019-04-01
这几个截图~
022019-04-01 -
xiaomo
2019-04-01
麻烦把user/info接口的返回信息截图一下?
012019-04-01
相似问题