我试图在身份验证失败时传递JSON消息,在LocalStrategy中使用完成回调,但我得到的只是401和响应中的"未授权"字符串.
var express = require('express');
var bodyParser = require('body-parser');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var app = express();
app.use(bodyParser.json());
app.use(passport.initialize());
passport.serializeUser(function(user, done) {
done(null, user.email);
});
var strategy = new LocalStrategy({ usernameField: 'email' },
function (email, password, done) {
if (email === 'test@gmail.com' && password === 'pass') {
return done(null, { email: 'test@gmail.com' });
} else {
// never get this json object on the client side when posting invalid credentials
return done(null, false, { message: 'invalid …Run Code Online (Sandbox Code Playgroud) 我是RavenDB的新手.我正在尝试使用多地图索引功能,但我不确定它是否是解决我问题的最佳方法.所以我有三个文件:Unit,Car,People.
汽车文件看起来像这样:
{
Id: "cars/123",
PersonId: "people/1235",
UnitId: "units/4321",
Make: "Toyota",
Model: "Prius"
}
Run Code Online (Sandbox Code Playgroud)
People文档看起来像这样:
{
Id: "people/1235",
FirstName: "test",
LastName: "test"
}
Run Code Online (Sandbox Code Playgroud)
单位文件:
{
Id: "units/4321",
Address: "blah blah"
}
Run Code Online (Sandbox Code Playgroud)
这是一个缩写示例,在我的真实应用程序中有更多字段,因此数据去规范化将是我的最后手段.
我需要创建和索引,将所有这三个docuemnts连接在一个文档中.像这样的东西:
{
CarId: "cars/123",
PersonId: "people/1235",
UnitId: "units/4321",
Make: "Toyota",
Model: "Prius"
FirstName: "test",
LastName: "test"
Address: "blah blah"
}
// same unit different person owns a different car
{
CarId: "cars/122",
PersonId: "people/1236",
UnitId: "units/4321",
Make: "Toyota",
Model: "4runner"
FirstName: "test",
LastName: "test"
Address: "blah blah"
} …Run Code Online (Sandbox Code Playgroud) 我的ngrx状态包含一组项目:
export interface MyState {
myItems: ItemType[];
}
Run Code Online (Sandbox Code Playgroud)
我有一个包含带有异步管道的ngFor的组件。
标记:
<app-my-item-details-card *ngFor="let myItem of myItems$ | async"> </app-my-item-details-card>
Run Code Online (Sandbox Code Playgroud)
选择器:
this.myItems$ = createSelector(getMyState, state => state.myItems);
Run Code Online (Sandbox Code Playgroud)
在 AppMyItemDetailsCardComponent 内部,我有一个布尔标志displayDetails:boolean和按钮按钮 (click)="displayDetails = !displayDetails" 切换布尔标志。在详细信息面板上,我有一些输入显示来自传递给组件的MyItem实例的一些数据。用户可以修改这些 html 元素并单击“保存”按钮,该按钮会触发MyItemUpdateAction操作。在 store reducer 我做这样的事情:
const myItemToModifyIndex = state.myItems.findIndex(...predicated based on the passed a ction...)
// cloning the item that I need to modify.
const myItemClone = [...state.myItems[myItemToModifyIndex]];
// modifying properties on the …Run Code Online (Sandbox Code Playgroud)