Mar*_*rco 6 node.js express angularjs passport-local passport.js
嗨,我想在我的应用程序中支持formbased身份验证和http基本身份验证.一切都按预期工作,除非我使用基于表单的auth通过angularjs与错误的凭据.
浏览器不显示我的角度代码处理401,而是显示由WWW-Authenticate标头引起的BASIC auth对话框.
如何在使用本地策略时阻止添加标头?或者我如何以不同的方式支持这两种机制?
我在基于Express的应用程序中使用以下路由.
api.post('/authenticate', passport.authenticate(['local', 'basic'], { session: false }), function (req, res) {
Run Code Online (Sandbox Code Playgroud)
这将在该URL上启用两种身份验证方法.我再说一遍,当我使用formbased使用错误的凭据时,它会向我显示基本的auth对话框(我不希望这样).
以下是我如何注册策略.
passport.use(new BasicStrategy({ realm: 'Authentication failed. Wrong username or password.'}, verifyLocalUser));
passport.use(new LocalStrategy(verifyLocalUser));
Run Code Online (Sandbox Code Playgroud)
这就是我的verifyUser方法的样子......
var verifyLocalUser = function (username, password, next) {
User.findOne({
username: username
}).select('fullname admin username password').exec(function (err, user) {
if (err) {
return next(err);
}
if (user && user.comparePasswords(password)) {
return next(null, user);
} else {
next(null, false, { message: 'Authentication failed. Wrong username or password.' });
}
});
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何使用passport.js支持多种身份验证方法?
为了完整性,这是验证我的角度代码......
authFactory.signIn = function (username, password) {
return $http.post('/api/authenticate', {
username: username,
password: password
}).then(function (res) {
AuthToken.setToken(res.data.token);
return res.data;
}, function (res) {
console.warn(res);
});
};
Run Code Online (Sandbox Code Playgroud)
而不是这个:
next(null, false, { message: 'Authentication failed. Wrong username or password.' });
Run Code Online (Sandbox Code Playgroud)
你可以使用这个:
cb(new YourCustomError())
Run Code Online (Sandbox Code Playgroud)
“YourCustomError”可以有一条消息,对我来说,我的“YourCustomError”看起来像:
class HttpError extends Error {
constructor (msg = 'Invalid Request', status = 400) {
super(msg)
this.status = status
}
}
class Forbidden extends HttpError {
constructor (msg = 'Forbidden') {
super(msg, 403)
}
}
Run Code Online (Sandbox Code Playgroud)
或者new Error(<message>)也可能适合你
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |