使用node/express - 我想从请求头中获取一些JSON,但我想安全地完成它.
如果由于某种原因它不是有效的JSON,它没关系,它只能返回false或者其他什么,它只会拒绝请求并继续前进.问题是,如果它不是有效的JSON,它会抛出语法错误.通常我希望语法错误爆炸,但在这种情况下不是.
var boom = JSON.parse(req.headers.myHeader);
我是否刮掉堆栈并检查来自该特定模块的错误解析调用,如果是这样,它会忽略它?这看起来有点疯狂.当然有更好的方法.
编辑:我知道try/catch块是一种处理此错误的方法,但它是节点应用程序中的最佳方式吗?这样会阻塞节点吗?
我真的很喜欢棱角分明,但反应却得到了很多关注.他们真的是对立的力量吗?
将反应和角度一起使用是一个好主意吗?我可否? 我是不是该?
混合它们的利弊是什么?
React用于UI,但angular可以处理控制器和视图......但是在处理视图时反应更好吗?我们可以通过仅将角度降级到控制器来制作更好的应用程序吗?
做这些事情的任何好资源?
我喜欢角度的一件事似乎不那么真实的反应是角度真的允许你分离关注点,而反应开始混淆这一点.它似乎与角度方式相反,至少.
我正在构建一个带有sails.js后端的角度应用程序.我已将此JWT身份验证合并到应用程序中.
https://github.com/Foxandxss/sails-angular-jwt-example
我仍然在探究身份验证的确切工作方式,我目前正在尝试弄清楚如何添加多个授权级别.它预先构建为0和1,我想在其上面添加一个管理级别.
它按如下方式处理现有授权级别:通过常量为每条路径分配授权级别.因此,所有用户路由都获得在状态中的data属性分配的此访问属性:
$stateProvider
.state('user', {
abstract: true,
template: '<ui-view/>',
data: {
access: AccessLevels.user
}
})
Run Code Online (Sandbox Code Playgroud)
AccessLevels.user是从常量键值对中提取的:
angular.module('app')
.constant('AccessLevels', {
anon: 0,
user: 1
});
Run Code Online (Sandbox Code Playgroud)
每当路由导航到时,它都会检查data.access属性以查看该特定路由的访问级别.如果它作为需要身份验证的路由返回,它会检查localStorage是否有令牌.如果有令牌,则路由继续,否则它会引导您.
这是在stateChangeStart上调用的函数:
authorize: function(access) { //<- 'access' will be whatever is in the data property for that state
if (access === AccessLevels.user) {
return this.isAuthenticated(); // <- this just grabs the token
} else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
那么添加附加层的最简单方法是什么?
我显然需要将auth_level值放入用户模型中.但那又怎样?添加此功能和维护现有身份验证的完整性的最佳方法是什么(我担心安全性)?
所以我查看了这篇文章: 是一个允许http删除请求的实体
这似乎表明,虽然在某些概念层面上做"好",但在实践中它可能不可行,因为浏览器只是忽略它.
我有一些express.js身份验证中间件我需要通过,我不想将我的用户详细信息附加到url params.我需要进行身份验证的所有其他请求都会将这些详细信息附加到请求正文中.
有没有办法强迫这个?我看到其他一些帖子,其中有些人似乎成功通过删除请求传递了一个正文.
我正在运行一个节点/ sails后端.它始终将正文记录为未定义的删除请求.有没有办法修改
我仍然是yii2中的新手,我正在尝试让我的管理员用户能够切换到另一个用户,这样他就可以看到与这些用户完全相同的页面(如果他们报告任何问题/错误).
我找到了switchIdentity()
方法,但我无法弄清楚如何调用它$identity
.
顺便说一下,你们认为这是管理员检查"用户视图"或任何人有更好想法的最佳方式吗?
我正在尝试最小化一些棱角分明的脚本,但由于某种原因,uglify会无限期地挂起。如果我将JSHint添加到任务列表中,它将运行良好并完成,然后挂在uglify上。
这是我的Gruntfile:
module.exports = function (grunt) {
// Project configuration
grunt.initConfig({
// make node configuration available for use
pkg: grunt.file.readJSON('package.json'),
// configure uglify
uglify: {
options: {
mangle: false
},
my_target: {
dist: {'dist/test.min.js': ['src/test.js']}
}
},
// configure JSHint
jshint: {
app: ['src/*.js']
}
});
// load pluginsng
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
// default
grunt.registerTask('default', ['jshint', 'uglify']);
grunt.registerTask('uglify', ['uglify']);
};
Run Code Online (Sandbox Code Playgroud)
这是我使用的版本:
"devDependencies": {
"grunt": "~0.4.5",
"grunt-contrib-jshint": "~0.11.2",
"grunt-contrib-uglify": "~0.9.1"
}
Run Code Online (Sandbox Code Playgroud)
我跑了grunt -v
,在jshint完成后,它将永远输出:
Running "uglify" task
Running "uglify" task
Running …
Run Code Online (Sandbox Code Playgroud)