我已经打了好几个小时了,我很难过.我正在向MVC 5控制器发出ajax post请求,试图自动登录特定的预定义"超级"用户.在控制器方法中,我正在尝试以编程方式设置HttpContext.Current.User并进行身份验证,因此超级用户可以跳过手动登录的过程.对此的共识似乎就在这里,我实现了:
这似乎有效,直到我尝试使用自定义AuthorizeAttribute查看任何其他控制器方法.
控制器方法:
[HttpPost]
[AllowAnonymous]
public ActionResult Login(string username)
{
string password = ConfigurationManager.AppSettings["Pass"];
User user = service.Login(username, password);
var name = FormsAuthentication.FormsCookieName;
var cookie = Response.Cookies[name];
if (cookie != null)
{
var ticket = FormsAuthentication.Decrypt(cookie.Value);
if (ticket != null && !ticket.Expired)
{
string[] roles = (ticket.UserData as string ?? "").Split(',');
System.Web.HttpContext.Current.User = new GenericPrincipal(new FormsIdentity(ticket), roles);
}
}
//...processing result
return Json(result);
}
Run Code Online (Sandbox Code Playgroud)
上面的service.Login方法创建cookie:
FormsAuthentication.SetAuthCookie(cookieValue, false);
Run Code Online (Sandbox Code Playgroud)
虽然我正在设置具有Identity和IsAuthenticated的User,但下面的filterContext.HttpContext.User不是同一个用户.它本质上是空的,好像从未分配过,并且未经过身份验证.
public override void OnAuthorization(AuthorizationContext filterContext)
{
string[] userDetails = …Run Code Online (Sandbox Code Playgroud) 我很难找到教程。我是 webhooks 的新手,除了对它们应该如何工作的一些基本描述之外,还没有使用或看过它们。
我们的用例是在有新记录时更新 API 的用户。由于我们正在使用 Kafka 并且已经确定了“最终一致性”,因此另一个用途可能是在无法从 Kafka 流中正确读取/写入记录时通知他们错误。
所以,据我所知,基本概念是:
const express = require("express");
const router = express.Router();
const processSomething = callback => {
setTimeout(callback, 20000);
}
router.post("/hook", (req, res, next) => {
processSomething(() => {
res.status(200).send({
id: "ABC123",
message: "New record added!"
});
});
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
这基本上是我拍摄的目的吗?用户是否会发布到此端点,等待响应,然后在收到响应后再次发布以重新订阅?长时间甚至无限期运行是否有问题?
我真的可以使用更复杂的例子,但我只是没有找到它们。您在谷歌搜索时发现的大部分内容都涉及集成第三方 webhooks,如 Github、Slack 等,而不是我需要构建的自定义。
我也不完全反对另一种方法。只是寻找通知 API 用户更新和其他重要信息的最佳方式。
根据这里的先前线程:
...我正在寻找有关处理大型数据上传文件的更广泛的建议。
设想:
用户上传了一个非常大的 CSV 文件,其中包含数十万到数百万行。它使用 multer 流式传输到端点:
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });
router.post("/", upload.single("upload"), (req, res) => {
//...
});
Run Code Online (Sandbox Code Playgroud)
每一行都被转换成一个 JSON 对象。然后将该对象映射到几个较小的对象中,这些对象需要插入到几个不同的表中,分布在各种微服务容器中并由其访问。
async.forEachOfSeries(data, (line, key, callback) => {
let model = splitData(line);
//save model.record1, model.record2, etc. sequentially
});
Run Code Online (Sandbox Code Playgroud)
很明显,使用这种方法我会遇到内存限制。这样做的最有效方式是什么?
我正在寻找关于如何正确地将这样的环境放在一起的建议.有大量的信息和快速入门的大量资料,但经过3天的反复试验,我仍然感到相当失落.我熟悉.NET Framework中的Identity Framework,但在此之前从未使用过Identity Server.
我们有一个基于Node和MySql的微服务设置... Docker容器中的一系列服务,它们与MySql集群中自己的数据库节点通信.我们在React和Redux中构建了一个管理UI - 它将从AWS桶运行.
我的任务是使用Identity Server对此React前端进行身份验证.我们不会在API上使用它进行身份验证.我建议使用Identity Framework在.NET Core中构建身份验证UI,因为它为我们提供了"开箱即用"所需的一切.
最终,两个Identity应用程序将成为针对这些API编写的所有应用程序的SSO,甚至是那些不是这些API的应用程序.此外,我需要在某些时候加入AD,以允许内部公司用户通过w/o手动验证.
(我认为)我们需要的是以下内容:
我到目前为止所做的是遵循以下两个教程:
http://docs.identityserver.io/en/dev/quickstarts/7_javascript_client.html
我的结果是在同一个项目(两个不同的端口)中一起运行的运行的Identity Server和Identity Core MVC应用程序.在遵循JS客户端教程之后,我运行了他们的示例代码 - 它将我重定向到MVC登录,该登录对Identity进行身份验证然后,Server返回此结果:
{
"sid": "8e60eb65960d967834cb3eb4fdcbbd49",
"sub": "dfc90bd1-cad4-45d0-84bd-174e8a6ca891",
"auth_time": 1516296631,
"idp": "local",
"amr": [
"pwd"
],
"preferred_username": "me@gmail.com",
"name": "me@gmail.com"
}
Run Code Online (Sandbox Code Playgroud)
单击注销失败,但这是因为第一个教程中的控制器示例不包含用于注销的GET,例如隐藏在JavaScriptClient示例中的示例控制器.
感觉就像我到了某个地方,但与此同时,我现在完全意识到我知之甚少.可以使用建议,甚至只是指向正确的快速启动以实现我正在寻找的东西.
javascript reactjs asp.net-identity asp.net-core identityserver4
抱歉,我知道有人问过这个问题,但我找不到适合我的例子。如果有这么多人为此苦苦挣扎,似乎不太容易理解。
我只需要知道如何以干净、简单的方式捕获 React 中的错误。我正在使用 CRA 2.0/React 16.7。我想要在操作级别有一个 try/catch 块,因为这是我的应用程序中业务逻辑集中的地方。
我读了这篇文章并按照描述实现了它,但我的 ErrorBoundary 对象从未捕获错误。
例子:
import React, { Component } from "react";
class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
return { hasError: true };
}
componentDidCatch(error, info) {
console.log("ErrorBoundary: ", error);
console.log("ErrorBoundary: ", info);
}
render() {
if (this.state.hasError) {
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
export default ErrorBoundary;
Run Code Online (Sandbox Code Playgroud)
我正在顶层包裹我的路线:
return (
<BrowserRouter>
<ErrorBoundary>
<div className="main-container">
<SideBar /> …Run Code Online (Sandbox Code Playgroud) 我按照这个基本的例子:
http://shapeshed.com/creating-a-basic-site-with-node-and-express/
生成了文件......他们都在那里.我一步一步地运行它.无论我使用哪种浏览器,我都会收到"无法连接"(Firefox)和"此网页不可用... ERR_CONNECTION_REFUSED"(Chrome) - 它只是无法正常工作.我检查了生成的bin/www文件,它似乎表示端口3000.但是,当我在生成网站后运行"node app.js"时,我没有输出.在查看该文件后,我注意到它指向我系统上Node的错误路径,因此我将其更改为正确的路径:
#!/usr/local/bin/ node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('rwc:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = parseInt(process.env.PORT, 10) || 3000;
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Event listener for HTTP …Run Code Online (Sandbox Code Playgroud) 这很简单。使用此代码,上传的任何图像文件都已损坏且无法打开。PDF 看起来不错,但我注意到它正在将值注入基于文本的文件中。这是 s3 中正确的文件大小,而不是像出错一样为零。我不确定这是否是 Express、SDK 或两者组合的问题?是邮递员吗?我在今年 3 月的一个工作项目中构建了类似的东西,它完美无缺。我不再有权访问该代码进行比较。
没有错误,没有任何问题的迹象。
const aws = require("aws-sdk");
const stream = require("stream");
const express = require("express");
const router = express.Router();
const AWS_ACCESS_KEY_ID = "XXXXXXXXXXXXXXXXXXXX";
const AWS_SECRET_ACCESS_KEY = "superSecretAccessKey";
const BUCKET_NAME = "my-bucket";
const BUCKET_REGION = "us-east-1";
const s3 = new aws.S3({
region: BUCKET_REGION,
accessKeyId: AWS_ACCESS_KEY_ID,
secretAccessKey: AWS_SECRET_ACCESS_KEY
});
const uploadStream = key => {
let streamPass = new stream.PassThrough();
let params = {
Bucket: BUCKET_NAME,
Key: key,
Body: streamPass
};
let streamPromise = s3.upload(params, (err, …Run Code Online (Sandbox Code Playgroud) 请原谅我的无知,这是我作为Android开发人员工作的第一周.虽然我有几年的Java,但我在Android世界中是一个完整的菜鸟.
我只是想创建一个对话框并显示它.从研究中,我发现这是首选的方法:
https://developer.android.com/guide/topics/ui/dialogs.html
所以,我走了那条路,一起拍了一个基本的例子,跑步时我得到一个例外:
09-11 11:57:28.914:E/AndroidRuntime(1217):致命异常:主09-11 11:57:28.914:E/AndroidRuntime(1217):进程:com.myapp.mobile,PID:1217 09-11 11:57:28.914:E/AndroidRuntime(1217):java.lang.RuntimeException:无法启动活动ComponentInfo {com.myapp.mobile/com.myapp.mobile.MainActivity}:java.lang.IllegalStateException:活动已被销毁09-11 11:57:28.914:E/AndroidRuntime(1217):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)09-11 11:57:28.914:E/AndroidRuntime(1217):在android. app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)09-11 11:57:28.914:E/AndroidRuntime(1217):at android.app.ActivityThread.access $ 800(ActivityThread.java:135)09-11 11:57 :28.914:E/AndroidRuntime(1217):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196)09-11 11:57:28.914:E/AndroidRuntime(1217):在android.os.Handler. dispatchMessage(Handler.java:102)09-11 11:57:28.914:E/AndroidRuntime(1217):在android.os.Loope r.loop(Looper.java:136)09-11 11:57:28.914:E/AndroidRuntime(1217):在android.app.ActivityThread.main(ActivityThread.java:5017)09-11 11:57:28.914: E/AndroidRuntime(1217):at java.lang.reflect.Method.invokeNative(Native Method)09-11 11:57:28.914:E/AndroidRuntime(1217):at java.lang.reflect.Method.invoke(Method. java:515)09-11 11:57:28.914:E/AndroidRuntime(1217):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)09-11 11:57:28.914: E/AndroidRuntime(1217):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)09-11 11:57:28.914:E/AndroidRuntime(1217):at dalvik.system.NativeStart.main (Native方法)09-11 11:57:28.914:E/AndroidRuntime(1217):引起:java.lang.IllegalStateException:活动已被破坏09-11 11:57:28.914:E/AndroidRuntime(1217):at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1345)09-11 11:57:28.914:E/AndroidRuntime(1217):在android.app.BackStackRecord.commitInternal(BackStackRecord.java:597)09-11 11:57:28.914:E/AndroidRuntime(1217):在android.app.BackStackRecord.commit(BackStackRecord.java:575)09-11 11:57:28.914:E/AndroidRuntime(1217):at android.app.DialogFragment.show(DialogFragment.java:230)09-11 11:57:28.914:E/AndroidRuntime(1217):at com.myapp.mobile.dialog.ActivationDialog.show(ActivationDialog.java:25)09 -11 11:57:28.914:E/AndroidRuntime(1217):at com.myapp.mobile.activate.Activation.ActivationCheck(Activation.java:11)09-11 11:57:28.914:E/AndroidRuntime(1217):在com.myapp.mobile.MainActivity.onCreate(MainActivity.java:20)09-11 11:57:28.914:E/AndroidRuntime(1217):at android.app.Activity.performCreate(Activity.java:5231)09- 11 11:57:28.914:E/AndroidRuntime(1217):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)09-11 11:57:28.914:E/AndroidRuntime(1217):在android.app. ActivityThread.performLaunchActivity(ActivityThread.java:2159)09-11 11:57:28.914:E/AndroidRuntime(1217):... 11更多
MainActivity的电话:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//check user activation
ActivationDialog dialog = new …Run Code Online (Sandbox Code Playgroud) 我只想在 redux-form 中设置和呈现表单的初始值。数据在 redux 中,我相信我的映射是正确的……但没有填充表单。该表单适用于插入,但现在我正在连接它以进行更新。
Redux 表单 7.2.0
形式:
...
<div className="form-group">
<div className="col-md-2 control-label">Name</div>
<div className="col-md-10">
<Field
label="Name"
name="app_cat_name"
component={input}
validate={required} />
</div>
</div>
<div className="form-group">
<div className="col-md-2 control-label">Description</div>
<div className="col-md-10">
<Field
label="Description"
name="app_cat_descr"
component={textArea}
validate={required} />
</div>
</div>
...
Run Code Online (Sandbox Code Playgroud)
mapStateToProps:
const mapStateToProps = state => {
let values = {
initialValues: state.category
};
return values;
}
Run Code Online (Sandbox Code Playgroud)
...此时在调试时,“值”具有正确的对象并且 mapStateToProps 正在工作。
连线:
export default reduxForm({
form: "CategoryForm",
enableReinitialize: true
})(connect(mapStateToProps, { saveCategory, getCategories, getCategoriesCount })(CategoryForm));
Run Code Online (Sandbox Code Playgroud)
...无论有没有“enableReinitialize”,结果都是一样的。
我什至尝试将它传递到表单中,但结果相同 - 表单字段为空:
<form …Run Code Online (Sandbox Code Playgroud) 上周我一直在 Cassandra 上死记硬背,试图了解基础知识,以及它是否适合我们的需求。我想我现在在基本层面上理解它,但如果它像我相信我被告知的那样工作......我只是不知道它是否合适。
我们有一个微服务平台,它本质上是我们客户之间的大型数据总线。他们使用一组 API 来推送和拉取共享数据。到目前为止,过滤非常简单……但无法知道未来会带来什么。
该平台的顶部是一个分析层,具有基于传递的数据的多个可视化(条形图、图形等)。
微服务平台建立在 MySQL 之上,其想法是我们可以使用集群,老实说,我们对此并不走运。最重要的是,变化是痛苦的,就像 RDBMS 世界中的课程一样。此外,我们预计会有大量数据和成千上万的并发用户 - 似乎我们将遇到不可避免的扩展问题。
因此,我们开始将 Cassandra 视为分布式 nosql 的潜在替代品。
我观看了 DataStax 视频,在另一个网站上学习了课程,然后开始深入研究。我发现的是:
虽然这些概念对我来说很有意义,但我正在努力了解这将如何满足大多数长期数据库需求。如果数据在几个不同的表中是冗余的……它是如何在这么多表中管理和保持一致的?在这种情况下,物化视图是答案吗?
我想喜欢这个想法并喜欢分布式功能,但坦率地说,在这一点上,我最害怕。我觉得我在上周学到了很多东西,但什么也没学到,我完全不确定如何继续。
我查看了 JanusGraph、Elassandra 等,看看它是否会在 Cassandra 之上提供一个更简单的界面,将其降级为基本上一个存储引擎,但我不确定这些东西中的许多是否足够成熟甚至合适,以满足我们的需要.
我想我正在寻找那些使用 Cassandra 构建东西的人的方向和洞察力,看看它是否适合我们正在做的事情。不幸的是,我的研发时间用完了。谢谢!
仔细观察并尝试了我在这里找到的所有东西,以及Googling在其他地方找到的东西......而我却无法超越这个.我正在使用Node,Express,EJS,并尝试在表单上使用csurf,这是使用jQuery ajax发布的.无论我如何配置csurf,我都会得到"403(Forbidden)无效的csrf令牌"
我尝试在app.js和控制器中全局配置.这是我在app.js中尝试的内容:
var express = require('express');
var session = require('express-session');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mysql = require('mysql');
var flash = require("connect-flash");
var csrf = require("csurf");
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(session({
secret: 'somethingsecret',
resave: true,
saveUninitialized: true,
httpOnly: true,
secure: false
}));
app.use(csrf());
app.use(function (req, res, next) { …Run Code Online (Sandbox Code Playgroud) 我知道有几篇关于这个的帖子,但根据我发现的那些,这应该可以正常工作。
我想在一个循环中发出一个 http 请求,并且我不希望循环在请求回调被触发之前进行迭代。我正在使用异步库,如下所示:
const async = require("async");
const request = require("request");
let data = [
"Larry",
"Curly",
"Moe"
];
async.forEachOf(data, (result, idx, callback) => {
console.log("Loop iterated", idx);
let fullUri = "https://jsonplaceholder.typicode.com/posts";
request({
url: fullUri
},
(err, res, body) => {
console.log("Request callback fired...");
if (err || res.statusCode !== 200) return callback(err);
console.log(result);
callback();
});
});
Run Code Online (Sandbox Code Playgroud)
我看到的是:
Loop iterated 0
Loop iterated 1
Loop iterated 2
Request callback fired...
Curly
Request callback fired...
Larry
Request callback fired...
Moe
Run Code Online (Sandbox Code Playgroud)
我需要看到的是: …
javascript ×8
node.js ×6
express ×4
reactjs ×3
asynchronous ×2
redux ×2
.net ×1
ajax ×1
amazon-s3 ×1
android ×1
asp.net-core ×1
asp.net-mvc ×1
aws-sdk ×1
bigdata ×1
cassandra ×1
cql ×1
httpcontext ×1
jquery ×1
redux-form ×1
rest ×1
webhooks ×1