摘要:,,使用Vue、Koa2、crypto-js和MD5加密技术,创建了一个安全可靠的账户系统。Vue用于构建用户界面,Koa2作为后端框架处理请求和响应。通过crypto-js库中的MD5加密功能,实现了账户的加密存储和登录验证。用户注册时,密码经过MD5加密处理并安全存储;用户登录时,输入的信息同样经过MD5加密验证,确保账户安全。这一组合提供了强大的前后端架构,确保了用户数据的安全性和完整性。
一、前端页面设置
让我们完善前端页面的描述和图片展示。
前端页面展示:

详细描述创建账户和登录的过程。
1、创建账户
在前端,使用Vue框架,通过`crypto-js`库来实现MD5加密,当创建账户时,将用户名、经过MD5加密后的密码和角色信息发送到后端,核心代码如下:
```javascript
import CryptoJS from 'crypto-js';
const loginFun = function () {
request({
url: '/user/register',
method: 'post',
data: {
username: ruleForm.username,
password: CryptoJS.MD5(ruleForm.password).toString(), // 密码MD5加密
role: ruleForm.role
}
})
.then((res) => {
console.log(res);
});
};
```
2、登录
登录时,同样使用MD5加密密码,然后发送到后端进行验证,如果验证成功,将角色、用户名和token存储到本地存储(localStorage)中,并跳转到主页,核心代码如下:
```javascript
import CryptoJS from 'crypto-js';
const loginFun = function () {
request({
url: '/user/login',
method: 'post',
data: {
username: ruleForm.username,
password: CryptoJS.MD5(ruleForm.password).toString() // 密码MD5加密
}
})
.then((res) => {
if (res.data.success && res.data && res.data.data) {
const role = res.data.data.role;
const username = res.data.data.username;
const token = res.data.token;
localStorage.setItem('role', role); // 存储角色信息到本地存储
localStorage.setItem('username', username); // 存储用户名信息到本地存储
localStorage.setItem('token', token); // 存储token信息到本地存储
router.push('/'); // 跳转到主页
return;
} else {
ElMessage({ // 显示警告消息提示登录失败原因或错误信息等细节内容(根据实际情况调整) 省略部分代码... }); }); }; ``` 二、后端操作 后端采用koa2框架和elasticsearch数据库进行开发,后端在接收到前端发送的请求后,为了增强安全性,不会直接将前端的密码储存到数据库中,而是再次进行MD5加密,并在登录时对比再次加密的数据是否相等。 核心代码如下: 后端代码部分需要引入crypto模块进行MD5加密操作。 创建账户部分的核心代码如下: ```javascript async registerUser(ctx, next) { console.log('registerUser'); const registerBody = ctx.request.body; const hash = crypto.createHash('md5'); hash.update(registerBody.password); const encryptedPassword = hash.digest('hex'); // 这里省略数据库存储操作部分代码... ctx.body = { data: result }; } ``` 登录部分的核心代码如下: ```javascript async loginFun(ctx, next) { const loginBody = ctx.request.body; const hash = crypto.createHash('md5'); hash.update(loginBody.password); const encryptedPassword = hash.digest('hex'); // 这里省略数据库查询验证操作部分代码... if (验证成功) { ctx.body = { data: { role: 用户角色信息, username: 用户用户名信息 }, message: 'success', success: true, token: 生成token的函数({username: loginBody.username, password: loginBody中的原始密码}) }; return; } else { ctx.body = 登录失败响应信息; return; } } ``` 后端部分还需要注意一些细节,比如优化查询逻辑,先查找用户名,再对比密码,以提高效率,后端还需要处理其他安全性问题,如防止SQL注入等。
还没有评论,来说两句吧...