首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angularjs星星之火--java JWT自动化--安全吗?

angularjs星星之火--java JWT自动化--安全吗?
EN

Stack Overflow用户
提问于 2016-02-07 17:38:48
回答 1查看 1.4K关注 0票数 1

我读了很多关于JWT的文章,但是对于我编写的代码我不太确定。

我有“前”过滤器在开始的时候是这样的:

代码语言:javascript
复制
before("/protected/*", (request, response) -> {
        try {
             parseJWT(request.headers("X-API-TOKEN"));
        } catch (Exception e) {
            halt(401, "You are not welcome here");
            //don't trust the JWT!
        }
    });

我有post方法来对用户进行自动测试,并在respoonse中设置X令牌(它只是为了测试而变的简单,我将在数据库中获得用户数据):

代码语言:javascript
复制
  post("/login", (req, res) -> {
        Gson gson = new Gson();
        User user = gson.fromJson(req.body(), User.class);
        if ((!user.getUsername().equals("foo") ||
                !user.getPassword().equals("bar"))) {
            halt(401, "You are not welcome here");
        }
        String jwt =
                createJWT(UUID.randomUUID().toString(), user.getUsername(), user.getUsername(),
                        15000); // just 15 secounds for test
        res.header("X-API-TOKEN", jwt);
        return res;
    });

createJWT和parseJWT方法取自本教程:如何在Java中创建和验证JWT

登录页面:

代码语言:javascript
复制
    form ng-submit="submit()">
      input ng-model="user.username" type="text" name="user" placeholder="Username" />
      input ng-model="user.password" type="password" name="pass" placeholder="Password" />
      input type="submit" value="Login" />
    /form>

我的自控者:

代码语言:javascript
复制
    myModule.controller('UserCtrl', function (`$`scope, `$`http, `$`window) {
    `$`scope.submit = function () {
    `$`http
       .post('/login', `$`scope.user)
       .success(function (data, status, headers, config) {
     `$`window.sessionStorage.token = headers('X-API-TOKEN');
     `$`scope.message = 'Welcome protected';
    })
    .error(function (data, status, headers, config) {
    // Erase the token if the user fails to log in
    delete `$`window.sessionStorage.token;
    // Handle login errors here
    `$`scope.message = 'Error: Invalid user or password';
    `$`window.location.href = '#/auth';
    });
    };
    });

现在,每当我访问受保护的站点时,我都需要在每个http调用中添加报头X令牌,我想我做了一些工作,因为我读过应该在每个请求中添加它,所以在角调用中我添加了:

代码语言:javascript
复制
      var config = {headers:  { 
             'X-API-TOKEN': `$`window.sessionStorage.token
           }
    };
      `$`http.get("/protected/elo", config)
      .success(function(response) {`$`scope.message = response;})
        .error(function (data, status, headers, config) {
                // Erase the token if the user fails to log in
                delete `$`window.sessionStorage.token;
                // Handle login errors here
                `$`scope.message = 'Error: Invalid user or password';
               `$`window.location.href = '#/auth';
              });;

我有两个问题:

  1. 如何在所有请求中自动添加X令牌?
  2. 如果我转ssl可以安全编码吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-09 11:07:01

  1. 您可以使用$http.defaults.headers.common向每个请求添加标头。见角度文献。应该在成功登录后进行配置。 您还可以将令牌存储在cookie中,以实现“记住我”的功能。
  2. 如果您打开SSL,那么对于大多数用户来说,这应该是足够安全的。您仍然可以在服务器上添加更多的安全检查,比如检查IP地址(请记住,有些用户有动态IP号)。

我也推荐关于角型JWT的egghead.io课程

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35256775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档