我开始使用node.js,express和mongodb规划REST API.API为网站(公共和私人区域)以及稍后的移动应用程序提供数据.该前端将与AngularJS一起开发.
有些日子我读了很多关于保护REST API的内容,但我没有找到最终的解决方案.据我所知,使用HTTPS提供基本的安全性.但是我如何在该用例中保护API:
只允许网站/应用的访问者/用户获取网站/应用的公共区域的数据
只允许经过身份验证和授权的用户获取私有区域的数据(并且只有用户授予权限的数据)
目前我认为只允许具有活动会话的用户使用API.为了授权用户,我将使用护照并获得许可,我需要为自己实施一些内容.全部在HTTPS之上.
有人可以提供一些最佳实践或经验吗?我的"架构"是否缺乏?
我有一个div overflow:hidden,我在其中显示用户输入的电话号码.div内的文本与右对齐,并且当文本向左扩展时,传入的字符将添加到右侧.
但是一旦文本大到不适合div,数字的最后一个字符就会自动裁剪,用户无法看到她输入的新字符.
我想要做的是裁剪左边的字符,就像div显示其最右边的内容并溢出到左侧.我该如何创造这种效果?

在以下HTML中
<div id="content" role="main">
Run Code Online (Sandbox Code Playgroud)
id可以通过#contentCSS 访问.我如何访问role="main".
题
方法1
放置favicon.ico在主目录中命名的文件是一种方法.浏览器始终请求该文件.您可以在apache日志文件中看到它.
方法2
部分中的HTML标记<head>:
<link rel="shortcut icon" href="/images/favicon.png (or ico?)" type="image/x-icon" />
Run Code Online (Sandbox Code Playgroud) 这不是一个现实世界的问题,我只是想了解如何创造承诺.
我需要了解如何为一个不返回任何内容的函数做出承诺,比如setTimeout.
假设我有:
function async(callback){
setTimeout(function(){
callback();
}, 5000);
}
async(function(){
console.log('async called back');
});
Run Code Online (Sandbox Code Playgroud)
如何创建一个async可以在setTimeout准备好后返回的承诺callback()?
我想包装它会带我到某个地方:
function setTimeoutReturnPromise(){
function promise(){}
promise.prototype.then = function() {
console.log('timed out');
};
setTimeout(function(){
return ???
},2000);
return promise;
}
Run Code Online (Sandbox Code Playgroud)
但我想不到这一点.
我正在编写一个nodejs应用程序,我想将其用作Web应用程序以及API提供程序.一旦用户通过身份验证,我想为该用户分配一个令牌,用于后续请求.这适用于Web应用程序的护照,因为我只是在会话中使用令牌序列化和反序列化用户.但是,在响应API请求时,没有设置cookie来存储会话信息.理想情况下,护照会在会话和请求正文中查找令牌.有没有办法配置护照来完成这个?
由于https://github.com/npm/npm/issues/2943,npm将永远不会支持别名包和安装同一包的多个版本的能力.
在github问题上发布的变通方法可能适用于纯JS模块,但随着npm成为前端包管理的标准,包现在包括各种资产,如CSS.
有没有解决方法来安装同一个包的多个版本?
我想出的最好的想法是"克隆"一个包,并用一个稍微不同的名称发布它.
例如,如果你需要的多个版本jquery,你可以只包发布所谓jquery-alias1,jquery-alias2,jquery-alias3等,然后在你的设置适当的版本package.json.
或者你可以根据自己的版本号,比如命名的包jquery-1.11.x,jquery-2.1.x等等.
但这两种方法看起来都很草率.还有更好的吗?
我无法让我的系统注销PassportJS.似乎正在调用注销路由,但它不会删除会话.如果用户没有以特定路线登录,我希望它返回401.我调用authenticateUser来检查用户是否已登录.
非常感谢!
/******* This in index.js *********/
// setup passport for username & passport authentication
adminToolsSetup.setup(passport);
// admin tool login/logout logic
app.post("/adminTool/login",
passport.authenticate('local', {
successRedirect: '/adminTool/index.html',
failureRedirect: '/',
failureFlash: false })
);
app.get('/adminTool/logout', adminToolsSetup.authenticateUser, function(req, res){
console.log("logging out");
console.log(res.user);
req.logout();
res.redirect('/');
});
// ******* This is in adminToolSetup ********
// Setting up user authentication to be using user name and passport as authentication method,
// this function will fetch the user information from the user name, and compare the password …Run Code Online (Sandbox Code Playgroud) 所以我想在ng-bind指令中通过过滤器放置一个变量
ng-bind="input | filter"
Run Code Online (Sandbox Code Playgroud)
但我想插入更多文字
ng-bind="input | filter + 'more' "
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有没有办法在ng-bind中添加更多文本,就像你只是使用时一样{{}}:
{{input | filter}} more
Run Code Online (Sandbox Code Playgroud)