0
我試圖設置與電子郵件和密碼的身份驗證。下面是signup.ejs部分碼:護照本地策略在郵遞員但在瀏覽器中工作
<% if (message.length > 0) { %>
<div class="alert alert-danger"><%= message %></div>
<% } %>
<!-- LOGIN FORM -->
<form action="/signup" method="post">
<div class="form-group">
<label>Email</label>
<input type="text" class="form-control" name="email">
</div>
<div class="form-group">
<label>Password</label>
<input type="password" class="form-control" name="password">
</div>
<button type="submit" class="btn btn-warning btn-lg">Signup</button>
</form>
形式員額/signup
,這是我的快遞路線:
// process the signup form
app.post(
'/signup',
passport.authenticate('local-signup', {
successRedirect: '/profile', // redirect to the secure profile section
failureRedirect: '/signup', // redirect back to the signup page if there is an error
failureFlash: true // allow flash messages
})
)
這是我使用的本地通行證策略:
passport.use(
'local-signup',
new LocalStrategy(
{
// by default, local strategy uses username and password, we will override with email
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true // allows us to pass back the entire request to the callback
},
function(req, email, password, done) {
// asynchronous
// User.findOne wont fire unless data is sent back
process.nextTick(function() {
// find a user whose email is the same as the forms email
// we are checking to see if the user trying to login already exists
User.findOne({ 'local.email': email }, function(err, user) {
// if there are any errors, return the error
if (err) return done(err)
// check to see if theres already a user with that email
if (user) {
return done(
null,
false,
req.flash('signupMessage', 'That email is already taken.')
)
} else {
// if there is no user with that email
// create the user
var newUser = new User()
// set the user's local credentials
newUser.local.email = email
newUser.local.password = newUser.generateHash(password)
// save the user
newUser.save(function(err) {
if (err) throw err
return done(null, newUser)
})
}
})
})
}
)
)
這是我的Github repo的完整代碼鏈接。
我遇到的問題是,當我在郵件和密碼請求中使用郵遞員發送郵件請求時,事實證明我很好,並且我已成功重定向到配置文件路由。但是,當我嘗試通過在我的頁面上填寫表單登錄時,我將重定向回「/註冊」路線。有人可以幫助解決這個問題嗎?
通用提示:檢查並查看策略的驗證處理程序是否正在調用。檢查'email'和'password'是否包含期望的值。檢查並查看是否有任何錯誤發生。 – robertklep