node.js项目,实现登录后跳转public文件夹静态页面全流程代码,用户名密码在代码中定义,未登录拦截所有请求到登录页面
时间: 2024-06-12 07:04:53 浏览: 9
以下是一个基本的示例,使用Express框架和Passport身份验证中间件来实现:
1. 安装依赖:
```bash
npm install express passport passport-local express-session
```
2. 创建一个名为`app.js`的文件,并添加以下代码:
```javascript
const express = require('express');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const session = require('express-session');
const app = express();
// 设置静态文件夹
app.use(express.static('public'));
// 配置Passport身份验证中间件
passport.use(new LocalStrategy((username, password, done) => {
// 验证用户名和密码
if (username === 'admin' && password === 'password') {
return done(null, { username: 'admin' });
} else {
return done(null, false);
}
}));
passport.serializeUser((user, done) => {
done(null, user.username);
});
passport.deserializeUser((username, done) => {
done(null, { username: username });
});
// 配置Express会话中间件
app.use(session({
secret: 'my-secret',
resave: false,
saveUninitialized: false
}));
// 初始化Passport和会话
app.use(passport.initialize());
app.use(passport.session());
// 定义登录路由
app.post('/login', passport.authenticate('local'), (req, res) => {
// 登录成功,重定向到静态页面
res.redirect('/index.html');
});
// 定义未登录拦截中间件
const isAuthenticated = (req, res, next) => {
if (req.isAuthenticated()) {
return next();
} else {
res.redirect('/login.html');
}
};
// 定义受保护的路由
app.get('/protected', isAuthenticated, (req, res) => {
res.send('Protected Page');
});
// 启动服务器
app.listen(3000, () => {
console.log('Server started on port 3000');
});
```
3. 在项目根目录下创建一个名为`public`的文件夹,并在其中创建一个名为`index.html`的文件。
4. 在`public`文件夹中创建一个名为`login.html`的文件,用于登录页面。
5. 在命令行中运行`node app.js`启动服务器。
现在,当用户访问`/protected`路由时,如果未登录,则会被重定向到登录页面。如果成功登录,则会重定向到`/index.html`。在`/index.html`中,用户可以访问静态文件夹中的任何文件。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)