小编Sur*_*ati的帖子

为什么JWT令牌中的头和有效负载始终以eyJ开头

我正在使用JWT令牌来授权我的API,在实现过程中我发现令牌中的头和有效负载始终以eyJ.这表明了什么?

jwt

12
推荐指数
1
解决办法
1991
查看次数

在通过Mocha测试asc / await时正确使用done()的方法

我正在练习基本的单元测试用例,mocha并且有点困惑如何使用WHOWHEN来使用done()处理程序。

  1. 如何使用done()

以下是我无法使用的示例代码done

it('Testing insertDocumentWithIndex', async (done) => {
  try{
    var data = await db.insertDocumentWithIndex('inspections', {
      "inspectorId" : 1,
      "curStatus" : 1,
      "lastUpdatedTS" : 1535222623216,
      "entryTS" : 1535222623216,
      "venueTypeId" : 1,
      "location" : [
        45.5891279,
        -45.0446183
      ]
    })
    expect(data.result.n).to.equal(1);
    expect(data.result.ok).to.equal(1);
  }
  catch(e){
    logger.error(e);
    done(e);
  }
})
Run Code Online (Sandbox Code Playgroud)

当我运行时,它失败并引发错误-

错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;如果返回承诺,请确保其解决。

但是done应该仅在失败的情况下被调用(原谅我,如果我说的是不正确的话,我是初学者),这是我做的catch阻塞,并且是返回到Promise的第二点,效果很好。见下面的代码

it('Testing insertDocumentWithIndex', async () => {
  return new Promise(async (resolve, reject) => …
Run Code Online (Sandbox Code Playgroud)

mocha.js node.js async-await

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

字段必须是 BSON 类型的对象

我正在创建一个动态过滤器对象,用于从 nodejs 中的 mongodb 查询数据。但是 mongo 抛出错误“无法解析过滤器对象,过滤器必须是 BSON 类型的对象”。这是我的参考函数代码和日志屏幕截图

function GetDeviceByFilter(args, cb) {
  var query = args.qs;
  var andQry = [];
  var orQry = [];
  var type = parseInt(query.type);
  try {
    if(type === uType.s){
      andQry.push({sel: parseInt(query.idx)});
      if(query.isSold === "0"){
        orQry.push({uid: {$exists: false}})
        orQry.push({uid: 0});
        orQry.push({uid: null});
      } else if(query.isSold === "1"){
        orQry.push({uid : {$gt: 0}});
      }
    } else if(type === uType.a){
      andQry.push({admn: parseInt(query.idx)});
      if(query.isSold === "0"){
        orQry.push({sel: {$exists: false}})
        orQry.push({sel: 0});
        orQry.push({sel: null});
      } else if(query.isSold === "1"){ …
Run Code Online (Sandbox Code Playgroud)

arrays json mongodb node.js mongodb-query

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

JWT 身份验证,无需获取每个请求的用户详细信息

我正在 Spring Security 中实现 JWT 身份验证。我有预定义的角色,例如。普通用户、管理员等

我有以下令牌有效载荷:

{
  "sub": "nick",
  "iat": "<some_date>",
  "exp": "<some_date+1h>",
  "scopes": [
    "ROLE_USER",
    "ROLE_ADMIN"
  ]
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我看到的大多数实现都是根据 id/username/email 从数据库中检索用户详细信息,然后使用这些数据来创建身份验证(例如,通过对 UsernamePasswordAuthenticationToken 进行身份验证)。对我来说,这实际上是一种更可取的方式,因为我总是拥有最新的特权和限制(例如,用户是否被禁止),并且与收益相比,时间开销并没有那么大。

我只是好奇如何仅根据传入请求中包含的角色(在其授权标头令牌中)使用 Spring Security 实现授权。我只想在请求被适当路由后访问控制器中的用户标识符。仅基于检查到期时间和角色有效性的令牌验证是否就足够了?

spring spring-security jwt

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

访问对象的值时获取未定义的值

在 loginUser 函数中,我想访问 'stsTokenManager' 中的 accessToken 的值,但是当我尝试访问该值时,我得到了 'undefind' 值。

import React, { Component } from 'react';
import {
StyleSheet,
Text, 
View,
Image,
Button,
TouchableWithoutFeedback, StatusBar, TextInput,
SafeAreaView, Keyboard, TouchableOpacity,
KeyboardAvoidingView
} from 'react-native';
import { CheckBox, Item, Label, Input } from 'native-base';
import * as firebase from 'firebase';

const firebaseconfig={
apiKey: " ",
authDomain: " ",
databaseURL: " ",
projectId: " ",
storageBucket: " ",
messagingSenderId: ""
};
firebase.initializeApp(firebaseconfig);

export default class Login extends Component{
// static navigationOptions = { …
Run Code Online (Sandbox Code Playgroud)

javascript json firebase react-native firebase-authentication

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