问题描述
这是错误。我陷入其中。看看这个。
TypeError: res.end is not a function
at allFailed (C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\node_modules\passport\lib\middleware\authenticate.js:174:11)
at attempt (C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\node_modules\passport\lib\middleware\authenticate.js:180:28)
at Strategy.strategy.fail (C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\node_modules\passport\lib\middleware\authenticate.js:302:9)
at Strategy.authenticate (C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\node_modules\passport-local\lib\strategy.js:75:17)
at attempt (C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\node_modules\passport\lib\middleware\authenticate.js:366:16)
at authenticate (C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\node_modules\passport\lib\middleware\authenticate.js:367:7)
at C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\app.js:70:37
at C:\Users\sam\OneDrive\desktop\WebDevPractice\secret-files\node_modules\passport-local-mongoose\index.js:247:28
at processticksAndRejections (internal/process/task_queues.js:97:5)
//请看一下注册路线。
require('dotenv').config();
const bodyParser = require("body-parser");
const express = require("express");
const ejs = require("ejs");
const mongoose = require("mongoose");
const session = require("express-session");
const passport = require ("passport");
const passportLocalMongoose = require("passport-local-mongoose");
const app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));
app.set("view engine","ejs");
app.use(session({
secret : "thisIsMyLitlleSecret",resave : false,saveUninitialized : false
}));
app.use(passport.initialize());
app.use(passport.session());
console.log(process.env.API_KEY);
mongoose.connect("mongodb://localhost:27017/userDB",{ useNewUrlParser: true,useUnifiedTopology: true });
mongoose.set("useCreateIndex",true);
const userSchema = new mongoose.Schema({
email : String,password : String
});
userSchema.plugin(passportLocalMongoose);
const User = mongoose.model("User",userSchema);
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.get("/",function(req,res){
res.render("home");
});
app.get("/login",res){
res.render("login");
});
app.get("/secrets",res){
if(req.isAauthenticated){
res.render("secrets");
}
else{
res.redirect("/login")
}
})
app.get("/register",res){
res.render("register");
});
app.post("/register",res){
User.register({username : req.body.username},req.body.password,function(err,user){
if(err){
console.log(err);
res.redirect("/register");
}
else
passport.authenticate("local")(res,req,function(){
res.redirect("/secrets");
});
});
});
app.post("/login",res){
});
app.listen(3000,res){
console.log("Server running on port 3000!!");
});
<%- include('partials/header') %>
<div class="container mt-5">
<h1>Register</h1>
<div class="row">
<div class="col-sm-8">
<div class="card">
<div class="card-body">
<!-- Makes POST request to /register route -->
<form action="/register" method="POST">
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" name="username">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password">
</div>
<button type="submit" class="btn btn-dark">Register</button>
</form>
</div>
</div>
</div>
<!-- <div class="col-sm-4">
<div class="card social-block">
<div class="card-body">
<a class="btn btn-block" href="/auth/google" role="button">
<i class="fab fa-google"></i>
Sign Up with Google
</a>
</div>
</div>
</div> -->
</div>
</div>
<%- include('partials/header') %>
如何解决?
解决方法
护照通常是中间件。
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
parent.selectedImage = image.rotate(radians: (360.0 * .pi / 180))!
parent.selectedVideoURL = URL(fileURLWithPath: "")
}
为什么在注册路由上没有登录?
,您有一个拼写错误,在您的代码“ req”必须在“ res”之前,这是您的代码:
passport.authenticate("local")(res,req,function(){
res.redirect("/secrets");
});
只需交换您的请求和响应的位置,应为-(req,res),然后它将起作用。这是应该的,看起来很相似,很难发现差异:
passport.authenticate("local")(req,res,function(){
res.redirect("/secrets");
});