小编Pix*_*ach的帖子

如果你能解码JWT它们如何安全?

我爱JWT.合作真的很有趣.我的问题是:如果我得到JWT并且我可以解码有效载荷,那么它是如何安全的?我不能只是从标题中获取令牌,解码并更改有效负载中的用户信息,并使用相同的正确编码密码将其发回?

我知道他们必须是安全的,但我真的很想了解这些技术.我错过了什么?谢谢!

security jwt express-jwt

252
推荐指数
6
解决办法
8万
查看次数

在json中简单地从root中迭代JSONObject

我试图使用json simple迭代json对象.我已经看到了你可以从中做一个getJSONObject("child")的答案

{ "child": { "something": "value", "something2": "value" } }
Run Code Online (Sandbox Code Playgroud)

但如果我有什么东西呢?

{
"k1":"v1",
"k2":"v2",
"k3":"v3"
} 
Run Code Online (Sandbox Code Playgroud)

并希望迭代该json对象.这个:

Iterator iter = jObj.keys();
Run Code Online (Sandbox Code Playgroud)

throws:找不到符号符号:方法keys()location:class org.json.simple.JSONObject

java json json-simple

23
推荐指数
2
解决办法
7万
查看次数

如何使用JSON-simple(Java)判断返回是JSONObject还是JSONArray?

我正在寻求服务,有时会得到这样的东西:

{ "param1": "value1", "param2": "value2" }
Run Code Online (Sandbox Code Playgroud)

有时会像这样得到回报:

[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]
Run Code Online (Sandbox Code Playgroud)

我怎么知道我得到了什么?当我执行getClass()时,它们都评估为String但是如果我尝试这样做:

json = (JSONObject) new JSONParser().parse(result); 
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我得到一个例外

org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
Run Code Online (Sandbox Code Playgroud)

怎么避免这个?我想知道如何检查我要回来的.(第一种情况有时会[]在其中,所以我不能做索引,我想要一个更清洁的方式,而不仅仅是检查第一个字符.

必须有某种方法来检查这个?

java json types json-simple

9
推荐指数
1
解决办法
8828
查看次数

委托刷新令牌获取新JWT的基本策略

我一直在很好地实现Angular SPA和JWT,但我总是很难委派新的令牌.

我的基本策略是:

  1. 在auth interceptor中获取Auth Error => Delegate with refresh token,替换JWT,否则注销

哪个不起作用,因为多个异步调用将触发,一个人将获得委托函数,但是然后刷新令牌将用于第二个,并且一个将失败,然后用户将被注销.

  1. 在其他事情之前:检查令牌到期,如果已过期=>委托与刷新令牌,替换jwt,否则注销

其中有一个类似的问题,第一次调用会注意到它已过期,然后获取新令牌,但由于它是Async,其余的调用将触发并失败等.

这里的基本策略是什么?我觉得应用程序应该做的第一件事就是检查JWT并委托一个新的,如果它是一个坏令牌,但在这种情况下它不应该是异步的.我是否只是在使用时不删除刷新令牌?

任何帮助都会很棒,我觉得这是我理解中的最后一个主要漏洞.谢谢!

authentication jwt angularjs single-page-application

8
推荐指数
1
解决办法
581
查看次数

Express不会在vhosts中提供静态ejs文件

我能得到的最接近的是客户端下载它们.它将下载正确的ejs文件.

它让我发疯,因为我觉得它应该有效,但事实并非如此.如果我把html文件放在那里他们服务就好了.这有点乱,因为我一直在尝试各种各样的事情.

var application_root = __dirname;
var express = require('express');
var vhost = require( 'vhost' );
var https = require('https');
var http = require('http');
var fs = require('fs');
var path = require("path");
var forceSSL = require('express-force-ssl');
//do something
var app = express();
var credentials = {};

var config = require('./config.json')[process.env.NODE_ENV || 'dev'];

//Use ejs?
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);

//Ensure all are going to www.
app.all(/.*/, function(req, res, next) {
  var host = req.header("host");
  if (host.match(/^www\..*/i)) {
    next();
  } else …
Run Code Online (Sandbox Code Playgroud)

ejs vhosts node.js express

6
推荐指数
1
解决办法
200
查看次数

在Express REST API中使用OOP的最佳方式?

我全力以赴,仅使用节点做项目.它很有趣,但有时我会迷失一点,我想在我感到困惑的时候尝试获得理解,所以我正确地构建它并且不要太过于不知所措.无论如何,这是问题所在:

我有使用Express和mysql的REST API.我设置了mysql:

app.js

//Variables, move these to env
var dbOptions = {
    host: config.db_config.host,
    user: config.db_config.user,
    password: config.db_config.password,
    port: config.db_config.port,
    database: config.db_config.database
};
app.use(myConnection(mysql, dbOptions, 'single'));
Run Code Online (Sandbox Code Playgroud)

然后我包括我的路线,传递路线应用程序和登录中间件,以便我可以在路线中使用它们:

app.js cont.

var userRoute = require('./routes/users.js')(app,log);
app.use('/users', userRoute);
Run Code Online (Sandbox Code Playgroud)

这实际上有点令人困惑,但现在我明白了,我必须将它们传递给模块才能让模块获取数据.

然后在我的路径文件中,我想使用一个对象,以便我可以在其他路由中使用相同的功能,但在用户文件中,为了使用其他所有使用的相同连接池,或者至少不必设置再次连接我必须传递响应和请求?必须有一个更好的方法来做到这一点.这样真的很难看.这是相关部分

路线/ users.js

var User = require('../controllers/User.js');

module.exports = (function(app,log) {
var userR = express.Router();

userR.post('/register', function(req,res){
        var email = req.body.email;
        var password = req.body.password;
        var firstName = req.body.first_name;
        var lastName = req.body.last_name;
        var userId;

        try {
            var query;
            var status = 200; …
Run Code Online (Sandbox Code Playgroud)

oop rest node.js express node-mysql

5
推荐指数
1
解决办法
6421
查看次数

Angular显示url编码错误,如何获取解码版本?

当我在角度应用程序中发现未被捕获的错误时,控制台消息如下所示:

Error: [$injector:modulerr] http://errors.angularjs.org/1.4.3/$injector/modulerr?p0=app&p1=%5B%24injector%3Aunpr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.4.3%2F%24injector%2Funpr%3Fp0%3DENVIRONMENT%0AJ%2F%3C%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A11%3A416%0Aeb%2Fr.%24injector%3C%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A45%3A375%0Ad%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A43%3A364%0A%40http%3A%2F%2Flocalhost%3A8600%2Fapp%2Fapp.js%3A42%3A18%0Ae%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A44%3A154%0Ad%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A42%3A320%0Ag%2F%3C%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A42%3A452%0Am%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A12%3A320%0Ag%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A42%3A229%0Aeb%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A45%3A1%0AAc%2Fd%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A24%3A339%0AAc%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A25%3A151%0AZd%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A23%3A464%0A%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A294%3A428%0An.Callbacks%2Fj%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A2%3A26920%0An.Callbacks%2Fk.fireWith%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A2%3A27738%0A.ready%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A2%3A29530%0AI%40http%3A%2F%2Flocalhost%3A8600%2Flibs.js%3A2%3A29721%0AnrWrapper%40http%3A%2F%2Flocalhost%3A8600%2F%23%2Fdashboard%3A15%3A12749%0A
Run Code Online (Sandbox Code Playgroud)

哪个没用,但如果我url_decode它就好了,像这样:

http://errors.angularjs.org/1.4.3/$injector/modulerr?p0=app&p1=[$injector:unpr] http://errors.angularjs.org/1.4.3/$injector/unpr?p0=ENVIRONMENT
J/<@http://localhost:8600/libs.js:11:416
eb/r.$injector<@http://localhost:8600/libs.js:45:375
d@http://localhost:8600/libs.js:43:364
@http://localhost:8600/app/app.js:42:18
e@http://localhost:8600/libs.js:44:154
d@http://localhost:8600/libs.js:42:320
g/<@http://localhost:8600/libs.js:42:452
m@http://localhost:8600/libs.js:12:320
g@http://localhost:8600/libs.js:42:229
eb@http://localhost:8600/libs.js:45:1
Ac/d@http://localhost:8600/libs.js:24:339
Ac@http://localhost:8600/libs.js:25:151
Zd@http://localhost:8600/libs.js:23:464
@http://localhost:8600/libs.js:294:428
n.Callbacks/j@http://localhost:8600/libs.js:2:26920
n.Callbacks/k.fireWith@http://localhost:8600/libs.js:2:27738
.ready@http://localhost:8600/libs.js:2:29530
I@http://localhost:8600/libs.js:2:29721
nrWrapper@http://localhost:8600/#/dashboard:15:12749
Run Code Online (Sandbox Code Playgroud)

默认情况下,如何通过这种方式获得角度输出错误?谢谢.

javascript angularjs

3
推荐指数
1
解决办法
480
查看次数

如何使用小胡子符号评估下划线中的javascript函数?

我想做这样的事情:

<script id="tmpl-books" type="text/template">
  <ul>
    <% for (var i = 0; i < books.length; i++) { %>
      <% var book = books[i]; %>
      <li>
      <em><%= book.title %></em> by <%= book.author %>
      </li>
    <% } %>
  </ul>
</script>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,但是我使用的是JSP,因此必须使用{{}}表示法,但是当我这样做时,{{for(var ...}}不起作用。

<script id="tmpl-books" type="text/template">
      <ul>
        {{ for (var i = 0; i < books.length; i++) { }}
          <% var book = books[i]; %>
          <li>
          <em>{{= book.title }}</em> by {{ book.author }}
          </li>
        {{ } }}
      </ul>
    </script>
Run Code Online (Sandbox Code Playgroud)

我该如何实现?

javascript templating underscore.js underscore.js-templating

2
推荐指数
1
解决办法
1238
查看次数

如何将PHP通知和警告发送到error_log而不是网页?

我不知道为什么我在互联网上找不到这方面的信息,但是php会在网页上打印通知和警告,这是不可接受的.我知道我可以在每个页面上以编程方式关闭它,但是如何设置配置以将这些错误发送到我的错误日志?我一直在谷歌搜索疯狂,无法搞清楚.

像这样的东西:

<b>Notice</b>: Use of undefined constant LOG_ERROR - assumed 'LOG_ERROR' in  on line <b>12</b><br /> <br /> <b>Warning</b>: syslog() expects parameter 1 to be long, string given in
Run Code Online (Sandbox Code Playgroud)

php apache error-handling lamp

2
推荐指数
1
解决办法
564
查看次数

无法在Slim路径中访问app变量?

这可能是Slim的基础,或者甚至可能是php问题,但我不知道它为什么不起作用:

$body = $app->request->getBody();
syslog(LOG_INFO,$body);

$app->put('/contacts',function(){
        try {
            $body = $app->request->getBody();
            syslog(LOG_INFO,"contacts received: ".json_decode($body));
        } catch(Exception $ex){
            syslog(LOG_ERR,$ex);
        }
    });
Run Code Online (Sandbox Code Playgroud)

第一个日志获取正文,但当我到达第二个时,我收到此错误:

异常'ErrorException',消息'Undefined variable:app'

当我尝试在put请求中注释掉一个并尝试读取$ body时,会发生同样的事情

异常'ErrorException',消息'Undefined variable:body'

php slim

-1
推荐指数
1
解决办法
3178
查看次数