我已经为客户端创建了角度为2的Web应用程序,并为服务器端创建NodeJS
了express
框架.
对于客户端,我生成了angular-cli
在a上运行的项目lite-server
,因此我的客户端和服务器在2个不同的服务上运行.
我想整合ADFS
身份验证.要实现身份验证,我正在使用passport-saml
包.我的服务器端有一个中间件API
,需要用户进行身份验证.
直接到达服务器(没有客户端)时,身份验证过程正常.
但是,我无法访问API
通过@angular/http
.我尝试了一个GET
来自服务器的简单请求(在端点使用中间件),因此我得到了没有重定向的身份验证页面(我不认为这是核心问题,但实际的实现是).
在对服务器和客户端使用单独的服务时,如何正确实现身份验证?
根据猫鼬内置验证器文档,我可以使用条件必填字段:
const schema = mongoose.Schema({
a: {
type: String,
required: function () {
return this.b === 1
}
},
b: {
type: Number,
required: true
}
});
Run Code Online (Sandbox Code Playgroud)
在此模式中,a
仅当 propertyb
等于时才需要该属性1
。
尝试创建新文档按预期工作:
Model.create({ b: 1 }); // throws ValidationError (property a is required)
Run Code Online (Sandbox Code Playgroud)
和
Model.create({ b: 2 }); // creates document
Run Code Online (Sandbox Code Playgroud)
我的问题是尝试更新现有文档并将属性设置b
为1
因此a
应该需要属性。
运行以下代码:
Model.findByIdAndUpdate(model._id, { b: 1 }, { new: true, runValidators: true});
Run Code Online (Sandbox Code Playgroud)
意外更新文档而不会抛出a
需要属性的错误。
我的猜测是验证仅针对更新的属性(property b …