小编dux*_*x--的帖子

React setState只能更新已安装或安装的组件

我收到以下警告

"警告:setState(...):只能更新已安装或安装的组件.这通常意味着你在未安装的组件上调用了setState().这是一个无操作.请检查ContactPage组件的代码."

当我最初进入联系页面时,第一次就可以了.然后,如果我离开页面并返回,则会抛出警告.

联系页面组件:

import React, { Component, PropTypes } from 'react';
import AppStore from '../../stores/AppStore';
import AppActions from '../../actions/AppActions';
import DataContent from './DataContent';

const title = 'Contact Us';


class ContactPage extends Component {

    constructor(props) {
        super(props);
        this.state = AppStore.getState();
        AppActions.getData();
    }

  static contextTypes = {
    onSetTitle: PropTypes.func.isRequired,
  };

  componentWillMount() {
    this.context.onSetTitle(title);
    AppStore.listen(this.onChange.bind(this));
}

componentWillUnmount() {
    AppStore.unlisten(this.onChange.bind(this));
}

onChange(state) {
    this.setState(state);
}

renderData() {
    return this.state.data.map((data) => {
        return (
            <DataContent key={data.id} data={data} />
        )
    })
}

  render() {
    return …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

22
推荐指数
2
解决办法
3万
查看次数

为什么performSelector不存在于swift中

显然以下内容在swift中不再可用:

[self performSelector:@selector(onFlip) withObject:nil afterDelay:0.3];
Run Code Online (Sandbox Code Playgroud)

如果仍然存在以下情况,为什么会这样:

NSObject.cancelPreviousPerformRequestsWithTarget(self, selector: singleTapSelector, object: nil)
Run Code Online (Sandbox Code Playgroud)

nsobject.cancel不能与performSelector一起使用吗?为什么有取消功能而不是执行功能?

ios swift

14
推荐指数
3
解决办法
2万
查看次数

如何保护刷新令牌?

我正在使用 JWT 对我的应用程序的用户进行身份验证。当用户登录时,他们会获得一个访问令牌和一个刷新令牌。为了保证刷新令牌的安全,我不会将其存储在客户端,而是将其与他们的帐户一起保存在后端,因此不容易访问。不过,我对刷新令牌的安全性感到困惑,这是我在阅读有关如何使用刷新令牌的在线资源时所理解的逻辑:

  1. 认证
  2. 将访问令牌 + 刷新令牌存储在某处(在我的情况下,前端的访问令牌和后端的刷新令牌)
  3. 执行 api 请求时,在 api 端验证访问令牌
  4. 如果访问令牌过期,使用刷新令牌生成新的访问令牌+新的刷新令牌,将访问令牌发送回客户端
  5. 像以前一样存储令牌......并重复

我担心的安全问题是,如果其他人(黑客)获得了访问令牌并使用它向 api 发送请求,如果令牌已过期,api 将使用刷新令牌来获得新的访问权限令牌 + 新的刷新令牌,并至少将访问令牌返回给黑客。

我读了这篇文章大约 5-6 次,我读了几遍这篇文章,以及一些关于这个主题的其他文章,他们都说了一些类似的话

确保安全地存储刷新令牌,因为它是长期存在的,access_token 是短暂的,所以没什么大不了的

但是根据我上面描述的流程,访问令牌是否是短暂的并不重要,刷新令牌将用于获取新的访问令牌并永久访问。

有什么我想念的吗?如果黑客持有过期的访问令牌,api 如何知道谁在发送请求?它仍然会使用刷新令牌发送一个新的。我应该以某种方式验证谁在发送请求吗?


更新

所以我明白,当请求新的访问令牌时,我需要发送刷新令牌、客户端 ID 和客户端机密。我遇到的问题是,像以前一样,黑客可以向我的 API 服务器发送请求,服务器从黑客那里获取被劫持的访问令牌,它会看到它已过期,因此它将发送刷新令牌,以及将 clientID/client 机密(存储为环境变量)发送到 Auth API 并取回新的访问令牌/刷新令牌,这使我们回到了同样的问题。


更新 2

关于这个主题的一些有趣的问题:

  1. 为什么 OAuth v2 有访问令牌和刷新令牌?
  2. https://security.stackexchange.com/questions/87119/how-secure-are-expiring-tokens-and-refresh-tokens

根据第二个问题和答案,似乎刷新令牌不是一种更安全的维护访问方式,只是更容易检测到黑客,因为不断请求身份验证/刷新令牌并使对方的令牌无效。问题是这只会在 2 个用户同时尝试访问资源时发生 - 如果只有黑客碰巧在给定时间段内处于活动状态,他将可以无限制地访问原始用户数据,直到原始用户尝试使用应用程序并访问受保护的资源

access-token oauth-2.0 refresh-token

12
推荐指数
2
解决办法
2万
查看次数

ajax.actionlink replace vs replacewith

Ajax.ActionLink在一个视图中使用我在ASP.NET-MVC应用程序上并且我正在使用InsertionMode.Replace,但我发现还有一个ReplaceWith选项.这两者有什么区别?是否可以替换另一个更多/更少的东西.我需要替换的div才能完全替换为局部视图.

我无法在谷歌的任何地方找到比较

asp.net ajax asp.net-mvc jquery

11
推荐指数
1
解决办法
4314
查看次数

asp.net mvc cssRewriteUrlTransform多个参数

我正在尝试在bundleconfig中的一个bundle中使用CssRwriteUrlTransform,但我一直得到一个缺少的参数错误,这就是我所拥有的:

bundles.Add(new StyleBundle("~/Content/GipStyleCss").Include(
       new CssRewriteUrlTransform(),
       "~/Content/GipStyles/all.css",
       "~/Content/GipStyles/normalize.css",
       "~/Content/GipStyles/reset.css",
       "~/Content/GipStyles/style.css",
));
Run Code Online (Sandbox Code Playgroud)

这可能是错的,但我不知道在哪里添加带有多个参数的include的CssRewriteUrlTransform参数

css asp.net asp.net-mvc

11
推荐指数
2
解决办法
5117
查看次数

我是否必须使用jsx扩展名保存react组件文件

我已经写了几个月的反应,我刚刚意识到我的一些文件有.js扩展,而其他文件有.jsx扩展.当我写jsx.js文件,一切仍然有效.延伸是什么重要吗?

顺便说一句(对于上下文),我正在使用webpack生成一个bundle.js文件.这有什么影响吗?

javascript jsx reactjs

11
推荐指数
3
解决办法
4249
查看次数

什么是org.eclipse.wst.common.component以及如何将它用于ant

我有一个eclipse工作区(用于工作),它有一个ear项目,我用它来"导出"/部署一个ear文件到JBoss服务器.

但是,他们最近要我创建一个可以构建工作区并创建耳朵的ant脚本,我已经成功完成了这项工作.当我尝试用这个使用ant脚本构建的耳朵运行我的程序时出现问题; 用于部署我只是复制生成的ear文件并将其粘贴到JBoss/standalone/deployments文件夹中并运行应用程序.

JBoss AS开始很好,但后来我得到了一些例外,这些异常会停止我在通过eclipse进行构建和部署时无法获得的应用程序.当使用7zip查看两个ear文件时,两个ear文件是相同的,但是我在eclipse工作区中看到,在ear项目中,有一个.settings文件夹,其中有4个文件,其中一个是org.eclipse.wst.common.我猜这个组件(如果不是全部4个文件)在某种程度上部署时是必要的.

ecplise在部署耳朵时是否使用此.settings文件夹和文件?在这个过程中会发生什么?如何在ant脚本中复制它,以便我的应用程序从ant或eclipse构建中运行相同?

编辑

我只想补充说.settings文件夹中的所有文件都没有打包到ear文件中,所以我猜他们在eclipse进行构建/部署时会以某种方式使用,但它并没有放在最终产品中

谢谢

java eclipse ant jboss

10
推荐指数
1
解决办法
1万
查看次数

如何在python请求中发送列表GET

我正在尝试从服务器获取一些数据.我正在使用python请求库进行GET:

my_list = #a list ['x', 'y', 'z']
payload = {'id_list': my_list}
requests.get(url, params=payload)
Run Code Online (Sandbox Code Playgroud)

我的服务器接受一个网址: https://url.com/download?id_list

但是当我发送此请求时,我收到一个错误:

<h1>400 Bad Request</h1> The server cannot understand the request due to malformed syntax. <br /><br /> Got multiple values for a parameter:<br /> <pre>id_list</pre>

我看到了日志,请求看起来像这样:

url/download?id_list=x&id_list=y&id_list=z

我怎样才能解决这个问题?

python python-requests

9
推荐指数
2
解决办法
1万
查看次数

为什么int和字符串的串联在编译时没有抱怨

我在视觉工作室有以下内容,并没有抱怨:

int? int1;
int? int2;

string str = int1 + "-" + int2;
Run Code Online (Sandbox Code Playgroud)

我的猜测是这会在运行时的某处抛出一个异常,但为什么visual studio允许这样做?只是因为它可能是空的?null int是否与null字符串一样处理?

c#

7
推荐指数
2
解决办法
119
查看次数

渲染在服务器上反应

我一直在试图弄清楚如何在服务器上渲染反应(node/express),最后找到一个足够简单的教程来了解正在发生的事情.但现在,在设置好所有内容之后,我在React.render方法中遇到错误:

这是我的组件文件:

var React = require('react');
var box = React.createClass({
    render: function() {
        return (
            <div style='padding: 10px'>
                this.props.text
            </div>
        );
    }
});

React.render(<box text='testing server side'/>, document.body);
module.exports = box;
Run Code Online (Sandbox Code Playgroud)

我跑的时候出错npm start:

文件没有定义

我该如何解决这个问题?我是否需要或不需要渲染方法?

为了提供更多上下文,box另一个组件需要此组件:

var React = require('react');
var Box = require('../react-jsx/box.js'); //this is the box component
var Component = React.createClass({
    render: function() {
        return (
            <html>
                <head>
                    <title>
                        React Server Rendering
                    </title>
                </head>
                <body>
                    <Box text='testing'/>
                    <script src="public/bundle.js"></script>
                </body>
            </html>
        ); …
Run Code Online (Sandbox Code Playgroud)

node.js express reactjs

7
推荐指数
1
解决办法
6688
查看次数