我很难为微服务架构选择合适/安全的身份验证策略.我在这个主题上发现的唯一SO帖子就是这个:微服务架构中的单点登录
我的想法是在每个服务(例如,身份验证,消息传递,通知,配置文件等)中为每个用户提供一个唯一的引用(在逻辑上user_id与他相当)以及在id登录时获取当前用户的可能性.
从我的研究中,我发现有两种可能的策略:

在此策略中,身份验证应用程序是其中一项服务.但是每个服务必须能够进行转换session_id=> user_id所以它必须简单易行.这就是为什么我想到Redis,它会存储密钥:值session_id:user_id.

在此策略中,会话存储并不重要,因为它仅由身份验证应用程序处理.然后user_id可以转发到其他服务.我想到了Rails + Devise(+ Redis或mem-cached,或cookie存储等),但有很多可能性.唯一重要的是Service X永远不需要对用户进行身份验证.
这两种解决方案如何比较:
或者你可能会建议我在这里没有提到的另一种解决方案?
我更喜欢解决方案#1,但没有找到太多的默认实现,这可以保证我正朝着正确的方向前进.
我希望我的问题不会被关闭.我真的不知道还能在哪里问它.
提前致谢
Bootstrap有一些很好的.visible-*(例如.visible-lg)类实用程序,用于根据屏幕大小选择要显示或隐藏的内容.
使用这些类时,它会display: block !important;在正确的屏幕大小时应用样式.
但有时,我想将它用于显示inline或显示的某些元素inline-block.
我怎么能干净地覆盖一些引导规则才能做出选择?或者它应该是bootstrap中的功能请求?
编辑
好像我不是唯一一个对这个问题感到疑惑的人.这是github问题.
谢谢你的最新答案!
当我尝试提交一个缺少必填字段的表单时,我的浏览器(Chrome)会显示一条消息,提到有一个字段丢失,如果它不在我的屏幕上,则会向上滚动到它.
我的问题是我的网页上有一个50px的固定标题,结果输入字段被隐藏了,消息似乎无处不在:

代替

有没有解决的办法?
我尝试将50px的边距应用于<html>和<body>
干杯
编辑
这是一个问题的小提琴:http://jsfiddle.net/LL5S6/1/
在使用facebook调试器时,它会抱怨:
警告fb:app_id尚未包含在元标记中.指定应用ID,以便将与Facebook共享的故事正确归因于该应用.或者,可以在打开共享对话框时在URL中设置app_id.否则,将分配默认应用程序ID(966242223397117).
我不明白为什么我有这样的消息,因为我没有app_id用于我的网站,我不应该为什么,因为我没有做任何Facebook连接或使用他们的任何插件.
我错过了什么,或者只是因为facebook想要推动我为我的网站创建一个应用程序?
React建议转移道具.整齐!
我怎样才能转移除一个以外的所有人?
render: function(){
return (<Cpnt {...this.propsButOne}><Subcpnt one={this.props.one} /></Cpnt>);
}
Run Code Online (Sandbox Code Playgroud) 我需要空间并执行: docker rmi $(docker images -f "dangling=true" -q)
从那以后我不能用docker-compose : docker-compose build,我得到错误:ERROR: Error processing tar file(exit status 1): unexpected EOF.
我试图删除所有图像,重新安装docker,但没有做任何事情:经过相当长的一段时间后总是出现同样的错误.
我建立在另一个系统上它起作用,这表明这是一个错误的状态问题.
知道我应该清理什么吗?
使用:
? docker version
Client:
Version: 17.03.0-ce
API version: 1.24 (downgraded from 1.26)
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 08:01:32 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24 (minimum version )
Go version: go1.6.2
Git commit: 78d1802
Built: Tue Jan 31 23:35:14 2017
OS/Arch: linux/amd64
Experimental: false …Run Code Online (Sandbox Code Playgroud) 我觉得我错过了什么.
这是我想要实现的目标:
有一个执行我的grunt任务server.js并且watch并行运行任务.我觉得这正是grunt设计的任务之一,但我无法实现这种配置.
其中,我读过这个: 通过Grunt运行Node应用程序, 但我仍然无法做到.
这是我的Gruntfile.js:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
watch: {
scripts: {
files: ['*.js'],
tasks: ['start'],
options: {
nospawn: true
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('start', function() {
grunt.util.spawn({
cmd: 'node',
args: ['server.js']
});
grunt.task.run('watch');
});
grunt.registerTask('default', 'start');
};
Run Code Online (Sandbox Code Playgroud)
我"grunt-contrib-watch": "~0.3.1"应该是比grunt-contrib-watch@0.3.0前面提到的帖子更高的版本.
如果你能帮助我实现正确的配置,我将非常感激.但更多的是,我不明白为什么没有正式的grunt-contrib-nodemon-like包装和任务,因为我觉得使用grunt是另一个很好的理由(我真的很喜欢它作为工具!)
谢谢
我需要向我的Rails应用添加实时通知.以下是我发现的不同架构.
问题:
我很喜欢使用docker-compose.
例如.在我的服务器上,当我想通过微小的更改来更新我的应用程序时,我只需要git pull origin master && docker-compose restart,完美地工作.
但有时,我需要重建(例如,我添加了一个npm依赖,需要npm install再次运行).
在这种情况下,我这样做docker-compose build --no-cache && docker-compose restart.
我希望这会:
但实际上它似乎又重新启动了前者.
这是预期的行为吗?
如何在构建之后处理重建并启动新的重建?
也许我错过了一个特定的命令?拥有它会有意义吗?
我正在编写一个自动脚本.
在某些时候,我在打电话git clone <repo>.但是这个操作有可能已经完成.
git clone --no-fail如果存储库存在,我如何调用它以忽略它?
谢谢