登录与注册页面是用户进入问卷调查系统的入口,其设计与实现直接影响用户的初次体验和系统的安全性。在基于 uni-app 的实现中,充分利用了 uni-app 的组件库和 Vue.js 的响应式原理,打造出简洁、高效且安全的登录与注册界面。
在页面设计上,登录页面采用了简洁直观的布局。页面顶部是系统的 logo 和名称,下方是登录表单区域。表单包含用户名输入框、密码输入框以及登录按钮。用户名输入框使用uni-input组件,设置placeholder属性为 “请输入用户名”,方便用户快速了解输入要求。密码输入框同样使用uni-input组件,并将type属性设置为 “password”,以确保密码的安全性。登录按钮使用uni-button组件,设置text属性为 “登录”,并绑定点击事件@click="login"。为了提升用户体验,当用户输入用户名或密码时,输入框会实时获取焦点,并在失去焦点时进行简单的格式校验。当用户名输入框失去焦点时,通过正则表达式校验用户名是否符合格式要求,如是否包含非法字符等。
<view class="login-container">
<view class="logo">问卷调查系统</view>
<view class="form">
<uni\-input v\-model="username" placeholder="请输入用户名"></uni\-input>
<uni\-input v\-model="password" type="password" placeholder="请输入密码"></uni\-input>
<uni\-button @click="login">登录</uni\-button>
</view>
return \{
username: '',
password: ''
\};
login\(\) \{
// 登录逻辑,发送请求到后端进行验证
uni\.request\(\{
url: 'https://your\-backend\-url\.com/login',
method: 'POST',
data: \{
username: this\.username,
password: this\.password
\},
success: \(res\) => \{
if \(res\.data\.code === 200\) \{
// 登录成功,保存用户信息,跳转到主页面
uni\.setStorageSync\('userInfo', res\.data\.data\);
uni\.navigateTo\(\{
url: '/pages/home/home'
\}\);
\} else \{
// 登录失败,提示错误信息
uni\.showToast\(\{
title: res\.data\.msg,
icon: 'none'
\}\);
\}
\},
fail: \(err\) => \{
console\.log\(err\);
uni\.showToast\(\{
title: '登录失败,请检查网络',
icon: 'none'
\}\);
\}
\}\);
\}
background-color: #f4f4f4;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
注册页面的设计同样注重简洁性和用户引导。页面顶部同样展示系统标识,下方是注册表单。表单包含用户名、密码、确认密码、邮箱等输入框,以及注册按钮。用户名和密码输入框的设置与登录页面类似,确认密码输入框用于验证用户输入的密码一致性,通过v-model绑定数据,并在提交时进行校验。邮箱输入框使用uni-input组件,设置type属性为 “email”,方便用户输入邮箱地址,并在提交时进行邮箱格式校验。注册按钮绑定点击事件@click="register",用于触发注册逻辑。
<view class="register-container">
<view class="logo">问卷调查系统</view>
<view class="form">
<uni\-input v\-model="username" placeholder="请输入用户名"></uni\-input>
<uni\-input v\-model="password" type="password" placeholder="请输入密码"></uni\-input>
<uni\-input v\-model="confirmPassword" type="password" placeholder="请确认密码"></uni\-input>
<uni\-input v\-model="email" type="email" placeholder="请输入邮箱"></uni\-input>
<uni\-button @click="register">注册</uni\-button>
</view>
return \{
username: '',
password: '',
confirmPassword: '',
email: ''
\};
register\(\) \{
// 注册逻辑,发送请求到后端进行注册
if \(this\.password\!== this\.confirmPassword\) \{
uni\.showToast\(\{
title: '两次输入的密码不一致',
icon: 'none'
\}\);
return;
\}
uni\.request\(\{
url: 'https://your\-backend\-url\.com/register',
method: 'POST',
data: \{
username: this\.username,
password: this\.password,
email: this\.email
\},
success: \(res\) => \{
if \(res\.data\.code === 200\) \{
// 注册成功,跳转到登录页面
uni\.showToast\(\{
title: '注册成功,请登录',
icon:'success'
\}\);
uni\.navigateTo\(\{
url: '/pages/login/login'
\}\);
\} else \{
// 注册失败,提示错误信息
uni\.showToast\(\{
title: res\.data\.msg,
icon: 'none'
\}\);
\}
\},
fail: \(err\) => \{
console\.log\(err\);
uni\.showToast\(\{
title: '注册失败,请检查网络',
icon: 'none'
\}\);
\}
\}\);
\}
background-color: #f4f4f4;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
在用户身份验证和注册信息处理方面,前端通过uni.request方法将用户输入的信息发送到后端服务器进行验证和处理。在登录时,后端接收到用户名和密码后,会在数据库中查询对应的用户信息,并进行密码验证。如果验证成功,后端返回包含用户信息和 token 的响应,前端将用户信息存储在本地缓存中,并根据 token 进行后续的权限控制。在注册时,后端接收到用户的注册信息后,会对信息进行校验,如用户名是否已存在、邮箱格式是否正确等。如果信息合法,后端将用户信息插入到数据库中,并返回注册成功的响应。通过这样的前后端协作,实现了安全、高效的用户身份验证和注册信息处理。