即使在阅读了大量教程之后,我也不是真正了解Temporal Adjusters或Java的新时间库.
如何将Instant对象转换为LocalTime对象.我正在思考以下几点:
LocalTime time = LocalTime.of(
instantStart.get(ChronoField.HOUR_OF_DAY),
instantStart.get(ChronoField.MINUTE_OF_HOUR)
);
Run Code Online (Sandbox Code Playgroud)
但它没有用.我该怎么做?
我正在使用React创建一个前端,并使用Node创建后端.我想使用Auth0 Lock管理用户信息- 向API发送带有每个请求的JWT.
如果我需要做以下事情之一怎么办?
Auth0唯一标识符user_id
不是整数,因此不能用作ID /密钥.我如何在服务器端用户存储上处理这个问题?
我是否在每个API请求上阅读JWT,确定该用户是否存在,然后创建新用户(如果不存在),或者将其与预先存在的用户相关联.在每个API请求上检查用户数据库是否有效?
我不确定如何使用基于JWT的API和Auth0处理一般流程.
编辑:
经过一番研究和反思后我的想法:Auth0的唯一用户标识符由他们提供user_id
.这里的问题是它不是整数.因此,它不应该用作users
数据库中表的键.
看起来好像你不应该在每个请求上检查用户数据库,但这可能是不正确的.一个想法是在初始登录时回调到后端,如果该帐户不存在,则创建它,如果该帐户存在,则继续.然后在用户登录前端后,在每个后续请求中信任Auth0 JWT(如果它在后端验证).
从我在网上看到的这个过程的极少描述来看,我所描述的方式似乎是正常的方式.但在某些情况下它没有意义.如果用户被禁止怎么办?他们仍然可以使用活动的JWT访问服务器功能,直到它由于时间过期而到期.
因此,如果在每个API请求上检查用户存储是正常/高效的,那么如何将Auth0的字符串id user_id
与数据存储区中的整数ID相关联以进行查询?我正在使用SQL变体.
使用Pure网格,我的网站没有正确响应,所以我尝试将默认的响应式网格代码复制并粘贴到我的文件中,但仍然无法正常运行.
这是他们网站上列出的默认代码:
<div class="pure-g">
<div class="pure-u-1 pure-u-md-1-3"> ... </div>
<div class="pure-u-1 pure-u-md-1-3"> ... </div>
<div class="pure-u-1 pure-u-md-1-3"> ... </div>
</div>
Run Code Online (Sandbox Code Playgroud)
我的完整代码可以在这里找到.W¯¯ 母鸡在浏览器中查看下面的代码,所述三组点的出现,就好像它们被堆叠在彼此的顶部,或者在100%列的宽度.从每个类列表中删除"pure-u-1"显示它们就好像这些点都非常小而且彼此叠加,字面上(不像块一样堆叠,因为你只能看到一组点).
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>B&W Vending</title>
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/pure-min.css">
</head>
<body>
<div class="pure-g">
<div class="pure-u-1 pure-u-md-1-3"> ... </div>
<div class="pure-u-1 pure-u-md-1-3"> ... </div>
<div class="pure-u-1 pure-u-md-1-3"> ... </div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 问题:更改<Route />
组件的参数不会更新它正在呈现的组件.路径更改显示在URL栏中,但直接呈现{this.props.match.params.id}
显示旧:id
URL而不是URL栏中反映的新值.
更新:我通过将<BrowserRouter />
index.js文件中的out移出到App.js文件中来解决此问题.它不再是Provider的直接子节点,而是App组件的子节点.不知道为什么这会让一切都突然发挥作用.
我在做什么:我有一个<Link to="/user/11" />
从user/7
(或任何当前的ID)到a/user/11
将componentWillReceiveProps(newProps)
它呈现不发射,该成分(此元件使用连接react-redux
有没有什么帮助任何.我试图将withRouter
周围的连接,并没有帮助)
如果我在chrome中手动刷新页面(使用CTRL-R或刷新按钮),页面将显示新数据,呈现"新"参数.
TLDR:从切换/user/7
到/user/11
不会触发该componentWillRecieveProps
功能,从而使组件显示旧状态
问题:我在这里做错了什么导致componentWillReceiveProps
不开火.
我正在使用react-router v4和最新的create-react-app
这是我的CWRP功能:
componentWillReceiveProps(newProps) {
console.log("getProps")
this.props.getUser(newProps.match.params.id)
if (newProps.match.params.id == newProps.currentUser.id) {
this.setState({ user: "currentUser" })
} else {
this.setState({ user: "selectedUser" })
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的组件的完整代码:https://gist.github.com/Connorelsea/c5c14e7c54994292bef2852475fc6b43
我在这里遵循解决方案,它似乎对我不起作用.路径参数更改时,组件不会重新装入
当尝试转换文件时,即使看似在其他文件中成功导入并使用(以相同的方式),也会Spacing.js
导致未定义的导入。styled-components
即使删除 styled-components babel 插件,也会出现类似的错误。
.babelrc
{
"presets": [["es2015", { "modules": false }], "react-native"],
"plugins": [
["styled-components", { "displayName": true }],
"react-hot-loader/babel",
"react-native-web",
"transform-decorators-legacy",
"transform-class-properties"
],
"env": {
"production": {
"plugins": [
"transform-react-inline-elements",
"transform-react-constant-elements"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
Spacing.js
- 转译前的代码
import React, { Component, Node } from "React";
import styled from "styled-components";
type Props = {
size: string,
color: string,
fullWidth?: boolean
};
class SpacingComponent extends Component<Props> {
render(): Node {
const { size, color, fullWidth …
Run Code Online (Sandbox Code Playgroud) 当我更改目录中的文件时,更改不会反映在我通过localhost访问它时显示的网页上,但是当我直接通过系统上的文件路径访问它时会显示更改.为什么?
我在Windows机器上.我的文件存储在C:\ Program Files(x86)\ Ampps\www\connor.dev中.当我直接引用文件时,通过在浏览器中找到这样的链接,文件:/// C:/ Program%20Files%20(x86)/Ampps/www/connor.dev/index.php,更改I制作并保存在Sublime Text中.当我通过访问localhost/connor.dev /访问它时,不会显示更改.即使我完全删除了该文件,它仍然显示在localhost中.这最近在xampp上开始发生,所以我卸载了它并使用了Ampps,现在发生了同样的事情.如果您需要更多信息,请询问.
fields
在以下代码中未定义,但在发生错误时它不会记录到控制台.在这个具体的例子中,为什么以及实际处理这个问题的方法是什么?
"Testing"
记录到控制台(第2行),但未报告未定义的变量fields
(第4行).错误在API响应(第5行)中返回,但没有相关信息,如行#,堆栈跟踪等.
如何将此日志中的错误发送到控制台,为什么不是?
export function post(req, res) {
console.log("Testing")
User.create( getFields(req, ["name_first", "name_last"]) )
.then(user => respondJSON (res, fields, { status: 201 }))
.catch(err => respondError (res, err))
}
Run Code Online (Sandbox Code Playgroud)
由于catch响应错误,我得到以下API响应:
{
"error": true,
"data": {
"message": "fields is not defined"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Babel 6和babel-node通过NPM脚本运行我的代码.我也在使用摩根伐木.删除用于记录的中间件不会改变错误输出.
我的伙伴和我正在制作一个个人项目,在我们去的时候制作分支,并在功能完成时将它们合并回主人.但合并,然后删除分支,使其成为日志上的一条直线(见图),这对于跟踪历史似乎不好.作为一个团队,我们应该做些什么,并在删除分支之前跟踪历史记录?
我只允许用户使用某个域名登录.此特定功能有效,而不是问题的根源.问题是,当用户尝试使用不正确的电子邮件地址登录时,会陷入某种负面反馈循环.
参考上面的图片,用户(在没有信息的空白隐身页面中)从第一步开始.单击登录会将他们带到第二步,然后再到第3步.尝试使用以不正确的域结尾的电子邮件地址登录会使他们进入步骤4.这是必需的.
在第四步之后,如果他们退出网站,则会显示第一步.这是可取的.注销的代码如下.
app.get("/logout", function(req, res) {
req.logout()
req.session.destroy()
res.clearCookie("connect.sid")
res.redirect("/")
})
Run Code Online (Sandbox Code Playgroud)
再次点击登录后会发生什么是不可取的.而不是将它们带回到第2步(期望,所以他们可以使用他们的CORRECT电子邮件地址再次登录),而是将它们直接带到第4步.好像Google记得最后登录的是谁.
简短问题:我如何向Google发出不要这样做的信号?或者触发浏览器允许他们再次登录?我很茫然.
额外详细信息:在Google的Oauth2.0文档中,它提到了hd和realm,它可以限制登录到某个域.但我不知道如何在PassportJS配置文件中配置它.
"scripts": {
"build": "babel src -d lib",
"start": "node --use_strict ./lib/index.js",
"watch": "nodemon lib/index.js --exec npm run build"
}
Run Code Online (Sandbox Code Playgroud)
使用该命令会npm run watch
导致运行以下错误命令:[nodemon] starting "npm lib/index.js run build"
我如何编写一个nodemon命令,在重新加载时,使用babel转换代码并重新加载代码?
javascript ×6
node.js ×4
reactjs ×3
html ×2
apache ×1
auth0 ×1
babel ×1
babeljs ×1
css ×1
datetime ×1
ecmascript-6 ×1
express ×1
git ×1
github ×1
google-oauth ×1
java ×1
java-8 ×1
jwt ×1
nodemon ×1
npm ×1
oauth ×1
passport.js ×1
react-router ×1
redux ×1
smartgit ×1
webpack ×1
xampp ×1
yui-pure-css ×1