当前位置:实例文章 » 其他实例» [文章]七夕杯—密码签到

七夕杯—密码签到

发布人:shili8 发布时间:2025-01-11 06:52 阅读次数:0

**七夕杯——密码签到**

**概述**

七夕杯是由中国计算机协会主办的一项网络安全竞赛活动。作为一名参与者,我决定开发一个密码签到的系统,以便于参加比赛的选手能够轻松地完成签到流程。

**系统设计**

本系统将使用以下技术栈:

* 后端:Node.js + Express.js* 前端:HTML + CSS + JavaScript (Vue.js)
* 数据库:MongoDB**后端开发**

首先,我们需要在 Node.js 中创建一个新项目,并安装所需的依赖项。

bashnpm init -ynpm install express body-parser mongoose


接下来,我们可以开始编写后端代码。我们将使用 Express.js 来处理 HTTP 请求,body-parser 来解析请求体,mongoose 来与 MongoDB 进行交互。

javascript// app.jsconst express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

const app = express();

app.use(bodyParser.json());

mongoose.connect('mongodb://localhost/seventhnight', { useNewUrlParser: true, useUnifiedTopology: true });

const User = mongoose.model('User', {
 username: String,
 password: String});

// GET /signinapp.get('/signin', (req, res) => {
 res.render('signin');
});

// POST /signinapp.post('/signin', async (req, res) => {
 const { username, password } = req.body;
 const user = await User.findOne({ username });
 if (!user || user.password !== password) {
 return res.status(401).send({ message: 'Invalid username or password' });
 }
 // Sign in successfully});

// GET /signupapp.get('/signup', (req, res) => {
 res.render('signup');
});

// POST /signupapp.post('/signup', async (req, res) => {
 const { username, password } = req.body;
 const user = await User.findOne({ username });
 if (user) {
 return res.status(400).send({ message: 'Username already exists' });
 }
 // Create new user});

app.listen(3000, () => {
 console.log('Server listening on port3000');
});


**前端开发**

接下来,我们需要在 Vue.js 中创建一个新项目,并安装所需的依赖项。

bashnpm init -ynpm install vue-router vue-resource axios


然后,我们可以开始编写前端代码。我们将使用 Vue Router 来管理路由,vue-resource 来与后端进行交互,axios 来发送 HTTP 请求。

javascript// main.jsimport Vue from 'vue';
import App from './App.vue';
import router from './router';

Vue.config.productionTips = false;

new Vue({
 render: h => h(App),
}).$mount('#app');

// router/index.jsimport Vue from 'vue';
import Router from 'vue-router';
import signin from '../views/signin.vue';
import signup from '../views/signup.vue';

Vue.use(Router);

export default new Router({
 routes: [
 {
 path: '/signin',
 name: 'Sign in',
 component: signin },
 {
 path: '/signup',
 name: 'Sign up',
 component: signup }
 ]
});

// views/signin.vue<template>
 <div>
 <h1>Sign in</h1>
 <form @submit.prevent="signin">
 <input type="text" v-model="username" placeholder="Username">
 

 <input type="password" v-model="password" placeholder="Password">
 

 <button type="submit">Sign in</button>
 </form>
 </div>
</template>

<script>
export default {
 data() {
 return {
 username: '',
 password: ''
 };
 },
 methods: {
 signin() {
 axios.post('/signin', { username, password })
 .then(response => {
 console.log(response.data);
 })
 .catch(error => {
 console.error(error);
 });
 }
 }
};
</script>

// views/signup.vue<template>
 <div>
 <h1>Sign up</h1>
 <form @submit.prevent="signup">
 <input type="text" v-model="username" placeholder="Username">
 

 <input type="password" v-model="password" placeholder="Password">
 

 <button type="submit">Sign up</button>
 </form>
 </div>
</template>

<script>
export default {
 data() {
 return {
 username: '',
 password: ''
 };
 },
 methods: {
 signup() {
 axios.post('/signup', { username, password })
 .then(response => {
 console.log(response.data);
 })
 .catch(error => {
 console.error(error);
 });
 }
 }
};
</script>


**测试**

最后,我们可以使用 Postman 或 curl 来测试我们的 API。

bashcurl -X GET  -X POST -H "Content-Type: application/json" -d '{"username": "john", "password": "123456"}'  -X GET  -X POST -H "Content-Type: application/json" -d '{"username": "jane", "password": "654321"}'  />
**总结**

在本文中,我们开发了一个密码签到的系统,使用 Node.js + Express.js 作为后端技术栈,Vue.js + Vue Router + vue-resource + axios 作为前端技术栈。我们使用 MongoDB 来存储用户信息,并使用 Postman 或 curl 来测试我们的 API。

相关标签:
其他信息

其他资源

Top