小编arc*_*col的帖子

通过Passport.js部分保护API端点

根据用户登录状态,我想从SAME api端点提供不同的结果。

用例具有从相同api端点提供的文章。因此,有些文章是公开的,而有些则是私人的。还有一些特殊页面,可以在其中查询文章列表。

示例:api / articles / special / all

此API应该返回数据库中当前的所有页面。但是,如果用户未登录,它还应该过滤掉私有结果。

使用Passport.js,我只能保护整个API端点,例如:

router.get('/', auth.isAuthenticated(), controller.index);
Run Code Online (Sandbox Code Playgroud)

虽然我想从实际函数中调用auth.isAuthenticated()方法,例如:

// Get list of articles
exports.index = function(req, res) {
  Article.find(function (err, articles) {
    if(err) { return handleError(res, err); }
    var titles = [];
    var loggedIn = false;
    if (auth.isAuthenticated()) {loggedIn = true;} // NOT WORKING
    for (var i = 0; i<articles.length; ++i) {
      if (articles[i].role === 'loggedIn' && loggedIn) {
          titles.push(articles[i].name);
      } else if(articles[i].role !== 'loggedIn') {
        titles.push(articles[i].name);
      }
    }
    return res.json(200, titles); …
Run Code Online (Sandbox Code Playgroud)

authentication node.js passport.js

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

从绝对文件路径构建 JSON 对象

我从服务器接收(在我的 angularjs 应用程序中)一个目录列表,如下所示:

['.trash-user',
 'cats',
 'cats/css',
 'cats/images/blog',
 'cats/images/gallery']
Run Code Online (Sandbox Code Playgroud)

我想构建一个如下所示的 javascript 变量:

[{
 label: '.trash-user'},
{label: 'cats',
 children: [{
   label: 'css'},
  {label: 'images',
   children: [{
      label: 'blog'},
     {label: 'gallery'}
     ]}
  ]}
}]
Run Code Online (Sandbox Code Playgroud)

路径是随机顺序的。

希望有人有一些非常优雅的解决方案,但任何解决方案都值得赞赏!

编辑:这是我天真的方法,我在递归方面遇到了真正的麻烦。我只能使 0 级工作:

var generateTree = function(filetree){
  console.log('--------- filetree -------');
  var model = [];
  var paths = [];
  for(var i=0;i<filetree.length;i++) {
    paths = filetree[i].split('/');
    for(var j=0;j<paths.length;++j) {
      var property = false;
      for(var k=0;k<model.length;++k) {
        if (model[k].hasOwnProperty('label') &&
            model[k].label === paths[0]) {
          property = true;
        }
      }
      if …
Run Code Online (Sandbox Code Playgroud)

javascript json

4
推荐指数
2
解决办法
1108
查看次数

在CSS网格内垂直对齐

我想要一个巨大的进度栏,该进度栏在CSS网格内垂直对齐。

问题是CSS网格内的垂直对齐对我不起作用。我在Firefox和Chrome上都尝试过。

我试过了vertical-align: middle,但是没有用。我已经在网格项目中放置了一个Flexbox,但是仍然无法正常工作。

这是我的最小示例:

.wrapper {
  display: grid;
  border-style: solid;
  border-color: red;
  grid-template-columns: repeat(2, 1fr);
  grid-template-rows: repeat(4, 1fr);
  grid-gap: 10px;
  width: 100vw;
  height: 100vh;
}

.one {
  border-style: solid;
  border-color: blue;
  grid-column: 1 / 3;
  grid-row: 1 / 2;
}

.two {
  border-style: solid;
  border-color: yellow;
  grid-column: 1 / 3;
  grid-row: 2 / 4;
}

.three {
  border-style: solid;
  border-color: violet;
  grid-column: 1;
  grid-row: 4 / 5;
}

.four {
  border-style: solid;
  border-color: aqua;
  grid-column: 2;
  grid-row: …
Run Code Online (Sandbox Code Playgroud)

css vertical-alignment css-grid

4
推荐指数
2
解决办法
8127
查看次数

BASH - echo 在 EOF 标签内如何工作

我想执行以下操作:

PASSWORD="mypassword"
RUNCOMMAND=$(cat <<EOF
echo $PASSWORD | sudo -S sudo echo "this is it babe"
EOF
)
Run Code Online (Sandbox Code Playgroud)

this is it babe我得到的不是 ,而是以下结果:

mypassword | sudo -S sudo echo "this is it babe"
Run Code Online (Sandbox Code Playgroud)

我尝试过cat <<\EOFcat <<'EOF'仍然没有运气。

有任何想法吗?

bash

0
推荐指数
1
解决办法
7075
查看次数