donglu3184 2016-07-22 12:44
浏览 1727
已采纳

使用JWT,如何检查Authorization-Header?

i'm completely new to working with JWT and i'm struggling at a certain point:

with ajax requests i can set the authorization-header before the request...ok.

How do i use the JWT for "normal" requests? F.e. when reloading the page or simply following a link.

F.e. if a user isn't logged in, i want to redirect him to a landing-page.

On the server-side i have middleware that checks the JWT from the authorization-header and then either grants permission or redirects to the landing-page, but ofc currently i'm always getting the landing-page, because there's no authorization-header for non-ajax requests.

I'm storing the JWT in localstorage.

What am i missing?

Regards

  • 写回答

3条回答 默认 最新

  • dos8244 2016-07-22 18:30
    关注

    You can store the JWT in a Cookie. This way they will be sent with every request (including "normal" ones). Here is a code snippet from one of my projects:

    func loginHandler(w http.ResponseWriter, r *http.Request) {
        ...
        accessToken := newAccessToken(...) // returns a JWT with fields .Token and .Expires
        cookie := &http.Cookie{
            Name:     "access_token",
            Value:    accessToken.Token,
            HttpOnly: true,
            Secure:true,
            Expires: time.Unix(accessToken.Expires, 0),
            Path:    "/",
        }
        http.SetCookie(w, cookie)
        ...
    }
    

    And to retreive the token:

    func someHandler(w http.ResponseWriter, r *http.Request) {
        cookie, err := r.Cookie("access_token")
        if err != nil {
            // handle missing cookie
        }
        accessToken := cookie.Value
        ...
    }
    

    Note that Cookies are vulnerable to CSRF Attacks.

    Further reading: Where to Store your JWTs – Cookies vs HTML5 Web Storage

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)