import { Request, Response, NextFunction } from "express"
interface Result {
data: any;
success: boolean;
errMsg?: string;
}
export const checkLogin = (req: Request, res: Response, next: NextFunction) => {
if (req.session?.isLogin) {
next();
} else {
res.json(getResponseData(null, '请先登录'));
}
}
export const getResponseData = (data: any, errMsg?: string): Result => {
if (errMsg) {
return {
data,
success: false,
errMsg
}
} else {
return {
data,
success: true
}
}
}
{"1577807863181":[{"title":"Vue2.5开发去哪儿网App","count":20},{"title":"React 16.4 开发简书项目","count":21},{"title":"React服务器渲染原理解析与实践","count":86},{"title":"手把手带你掌握新版Webpack4.0","count":4}],"1577807995656":[{"title":"Vue2.5开发去哪儿网App","count":49},{"title":"React 16.4 开发简书项目","count":69},{"title":"React服务器渲染原理解析与实践","count":44},{"title":"手把手带你掌握新版Webpack4.0","count":34}],"1577889957672":[{"title":"Vue2.5开发去哪儿网App","count":77},{"title":"React 16.4 开发简书项目","count":100},{"title":"React服务器渲染原理解析与实践","count":90},{"title":"手把手带你掌握新版Webpack4.0","count":60}],"1577890616471":[{"title":"Vue2.5开发去哪儿网App","count":83},{"title":"React 16.4 开发简书项目","count":89},{"title":"React服务器渲染原理解析与实践","count":13},{"title":"手把手带你掌握新版Webpack4.0","count":36}]}
"resolveJsonModule": true,
import Express, { Router, Request, Response, NextFunction } from 'express'
import { getResponseData, checkLogin } from './utils/index'
import * as Data from './utils/data.json'
interface RequestWithBody extends Request {
body: {
[key: string]: string | undefined
}
}
const router = Router();
const homePageHtml = `
<html>
<body>
<a href="/showData" >展示数据</a>
<a href="/logout" >退出登录</a>
</body>
</html>
`
const loginPageHtml = `
<html>
<body>
<form method="post" action="/login">
<input type="password" name="password" />
<button>登陆</button>
</form>
</body>
</html>
`
router.get('/', (req: Request, res: Response, next: NextFunction) => {
if (req.session?.isLogin) {
res.send(homePageHtml);
} else {
res.send(loginPageHtml);
}
})
router.post('/login', (req: RequestWithBody, res: Response) => {
if (req.session?.isLogin) {
res.json(getResponseData(false, '已经登录过'))
} else {
if (req.body?.password === '123456' && req.session) {
req.session.isLogin = true;
res.json(getResponseData(true))
} else {
res.json(getResponseData(false, '登录失败'));
}
}
})
router.get('/logout', checkLogin, (req: Request, res: Response) => {
if (req.session) {
req.session.isLogin = undefined;
}
res.json(getResponseData(true));
})
router.get('/showData', checkLogin, (req: Request, res: Response) => {
res.json(getResponseData(Data))
})
export default router;