我試圖通過角度將登錄信息從角度傳遞到後端快速端點。正在進行身份驗證的護照中間件每次都會失敗並進入失敗重定向。麻煩的是,我無法通過文檔找到它所期望的POST參數,或者它們在做什麼。這是我使用的策略(通過userapp.io插件)的失敗,還是實際的用戶名/密碼錯誤?護照中間件預期參數
登錄端點看起來是這樣的:
router.post('/login', passport.authenticate('userapp', {
failureRedirect: '#/login',
failureFlash: 'Invalid username or password',
successFlash: 'Welcome!' }),
function (req, res) {
res.cookie(SESSION_TOKEN, req.user.token);
res.redirect('/');
});
(請注意,這是最終連接到/auth/login
,它匹配下面的POST操作)
是提交到端點的形式如下:
<form method='post' action='/auth/login'>
<input name="login" placeholder="Username"><br>
<input name="password" placeholder="Password" type="password"><br>
<p><button type="submit">Log in</button></p>
<p ng-show="loading"><img src="https://app.userapp.io/img/ajax-loader-transparent.gif"></p>
<p ng-show="error">{{ error.message }}</p>
</form>
這是否正確提交數據到端點,我該如何去進一步調試發生了什麼?現在觀察到的行爲僅僅是登錄失敗,並且用戶以failureRedirect結束。
我知道的另一種選擇是使用ua-login
指令shown in this example而不是我自己的形式。麻煩在於,似乎有一些無證的配置魔法;使用ua-login
指令會導致客戶端發送到不存在的URL。現有的教程似乎沒有指出使ua-login
有效的必要配置。
您可以在將所有內容交給護照之前記錄'req.body'。在記錄參數並調用next()之前添加另一個函數。 (''/ login',function(req,res,next){console.log(req.body); next();},passport.authenticate('userapp'.....' –
當路由爲'/ login'時,你的表單的行爲是'/ auth/login'。這是故意的嗎? –
@Amir行爲是故意的;在問題中注意路由設置爲/ login,但是它連接在/ auth by another component。另外如果路由錯誤,失敗重定向不會發生,它只會是404。在額外的中間件上,我可以添加 - 但我已經知道請求體是什麼,因爲我的形式指定它。我不知道護照中間件期望做什麼正確的事 – FrobberOfBits