我已经建立了一个项目来保护使用 OAuth2 的 Sails 应用程序:https ://github.com/lucj/sails-oauth2-api
我无法解决授权代码授予的问题。
基本上,这是我遵循的步骤:
- 运行 Sails 应用程序
- 运行 unTrustedClient(示例文件夹中的节点 untrustedClient.js)
- 从 Web 浏览器,然后发出以下 URL:
http://localhost:1337/oauth/authorize?client_id=O3UTGRFNI1&response_type=code&redirect_uri=http://localhost:1339&scope=http://localhost:1337
注意:client_id 的值是应用程序启动时在sails 终端中为untrustedTestClient 显示的值
这会将我重定向到“登录”页面,这很好。
https://dl.dropboxusercontent.com/u/2330187/login.png
但是,当我提交凭据(默认为 me@gmail.com /password)时,我被重定向到 /index 而不是原始 URL(上面的那个)。
https://dl.dropboxusercontent.com/u/2330187/index.png
我需要重新发布上面的 URL 以显示对话框页面(带有允许/拒绝选项的页面)。
https://dl.dropboxusercontent.com/u/2330187/allow_deny.png
我正在使用“connect-ensure-login”中间件。
app.get('/oauth/authorize',
login.ensureLoggedIn(),
server.authorize(function(clientId, redirectURI, done) {
Client.findOne({clientId: clientId}, function(err, client) {
if (err) { return done(err); }
if (!client) { return done(null, false); }
if (client.redirectURI != redirectURI) { return done(null, false); }
return done(null, client, client.redirectURI);
});
}),
server.errorHandler(),
function(req, res) {
res.render('dialog', { transactionID: req.oauth2.transactionID,
user: req.user,
client: req.oauth2.client
});
}
);
我该如何解决这个问题,以便在我输入凭据后自动完成重定向?