/** * 登录页面控制器 * * @author CaiAoLin * @date 2017/6/1 * @version */ import BaseController from "../../common/base/base_controller"; import ManagerModel from "../models/manager_model"; import crypto from "crypto"; class LoginController extends BaseController { /** * 登录页面 * * @param {object} request * @param {object} response * @return {void} */ index(request, response) { let renderData = { layout: false, }; response.render('users/views/login/index', renderData); } /** * 登录操作 * * @param {object} request * @param {object} response * @return {string} */ async login(request, response) { let username = request.body.username; let password = request.body.password; let managerModel = new ManagerModel(); let responseData = { error: 0, msg: '' }; try { let managerData = await managerModel.findDataByCondition({username: username}); // 没有找到对应数据 if (managerData === null || managerData._id === undefined) { throw {code: 44001, err: '用户名或密码错误'}; } // 加密密码 let encryptPassword = managerModel.encryptPassword(managerData.token, password); if (encryptPassword !== managerData.password) { throw {code: 44001, err: '用户名或密码错误'}; } // 成功后写入session let currentTime = new Date().getTime(); let sessionToken = crypto.createHmac('sha1', currentTime + '').update(managerData.username) .digest().toString('base64'); let managerSession = { username: managerData.username, loginTime: currentTime, sessionToken: sessionToken, }; request.session.managerData = managerSession; } catch (error) { responseData.error = error.code; responseData.msg = error.err; } response.json(responseData); } /** * 退出操作 * * @param {object} request * @param {object} response * @return {void} */ logout(request, response) { // 清空session request.session.destroy(); response.redirect('/login'); } } export default LoginController;