赞
踩
用户登录是一个常见的场景,在应用程序中起到关键的作用。下面是几个常见的用户登录场景:
应用程序初始登录:当用户第一次打开应用程序时,需要输入用户名和密码进行登录。
会话保持:在用户已经登录的情况下,当用户关闭应用程序并重新打开时,可以自动使用之前保存的用户信息进行登录,无需再次输入用户名和密码。
账号切换:应用程序可能支持多个账号登录,用户可以选择切换不同的账号进行登录。例如,电子邮件客户端允许用户同时登录多个邮件账号。
第三方登录:应用程序支持使用第三方平台(如微信、QQ、微博等)账号进行登录。
忘记密码:当用户忘记密码时,提供找回密码的功能,可以通过手机短信、邮箱验证等方式重设密码。
社交登录:允许用户使用社交媒体账号(如Facebook、Twitter等)进行登录,提高用户的便捷性和流畅度。
单点登录(SSO):在一个生态系统中,用户可以通过一次登录获得对多个关联应用程序的访问权限,而无需为每个应用程序单独进行登录。
在这些场景下,通常需要实现用户身份认证、安全性处理、用户信息管理等功能,以提供良好的用户体验和数据安全。同时,需要注意保护用户的隐私信息,并遵守相关法律和规定,如个人信息保护法等。
更多详细内容,请微信搜索“前端爱好者
“, 戳我 查看 。
在uni-app中,你可以使用uni.request
方法来发送网络请求获取数据。uni.request
是封装了小程序的wx.request
的跨平台的网络请求API。
以下是一个简单的示例,演示了如何使用uni.request
发送GET请求并获取返回的数据:
// 发送GET请求
uni.request({
url: 'http://example.com/api/data', // 请求的URL
method: 'GET', // 请求方法,可选值包括:GET/POST/PUT/DELETE等
data: {}, // 请求参数,可根据接口文档自行添加
header: {
'Content-Type': 'application/json' // 请求头,根据实际情况设置
},
success: (res) => { // 请求成功回调函数
console.log(res.data); // 输出返回的数据
},
fail: (err) => { // 请求失败回调函数
console.log(err);
}
});
如果需要发送POST请求,只需将method
改为POST
,并在data
字段中传递请求参数。
你也可以使用axios
、flyio
等第三方库来进行网络请求,它们提供了更丰富的功能和更友好的API。你可以根据自己的需求选择使用合适的网络请求库。
<template> <view class="login-container"> <uni-forms ref="form" :modelValue="formData"> <uni-forms-item label="姓名" name="name"> <uni-easyinput type="text" v-model="formData.name" placeholder="请输入姓名" /> </uni-forms-item> <uni-forms-item label="密码" name="password"> <uni-easyinput type="password" v-model="formData.password" placeholder="请输入密码" /> </uni-forms-item> </uni-forms> <button @click="submit">提交</button> </view> </template> <script setup> import { reactive, ref } from 'vue' const formData = reactive({ name: 'LiMing', password: 'LiMing.com', }) // 触发提交表单 const submit = ()=>{ } </script>
页面展示入下:
新建文件 userUserStore.js,用于存储用户信息。
// userUserStore.js import { ref } from 'vue' // 导入定义仓库的方法 import {defineStore} from 'pinia'; export const useUserStore = defineStore("user",()=>{ // state :userInfo,token, const userInfo = ref({}) const token = ref(''); // actions:login,logout function login(data){ } function logout(data){ } return { userInfo,token,login,logout } })
添加是登录事件
function login(data) { var that = this; uni.request({ url: "url", method: "POST", data, success(res) { console.log("res", res) if (res.data.code === 200) { // 更新store userInfo.value = res.data.user; token.value = res.data.token; // 本地存储 uni.setStorageSync("userInfo", res.data.user) uni.setStorageSync("token", res.data.token); uni.showToast({ title: res.data.msg, icon: 'success' }) // 跳转到首页 uni.redirectTo({ url: '/pages/index/index' }) } else { uni.showToast({ title: res.data.msg, icon: 'none' }) } }, fail() { uni.showToast({ title: "登录失败", icon: 'error' }) } }) }
// 引入,并实例化 useUserStore
import {useUserStore} from '@/stores/userUserStore.js'
const userStore = useUserStore()
// 触发提交表单
const submit = ()=>{
userStore.login(formData)
}
@/stores/userUserStore.js
import { ref } from 'vue' // 导入定义仓库的方法 import { defineStore } from 'pinia'; export const useUserStore = defineStore("user", () => { // state :userInfo,token, const userInfo = ref({}) const token = ref(''); // actions:login,logout function login(data) { console.log('data') console.log(data) var that = this; uni.request({ url: "url", method: "POST", data, success(res) { console.log("res", res) if (res.data.code === 200) { // 更新store userInfo.value = res.data.user; token.value = res.data.token; // 本地存储 uni.setStorageSync("userInfo", res.data.user) uni.setStorageSync("token", res.data.token); uni.showToast({ title: res.data.msg, icon: 'success' }) // 跳转到首页 uni.redirectTo({ url: '/pages/index/index' }) } else { uni.showToast({ title: res.data.msg, icon: 'none' }) } }, fail() { uni.showToast({ title: "登录失败", icon: 'error' }) } }) } function logout(data) {} return { userInfo, token, login, logout } })
登录页面
<template> <view class="login-container"> <uni-forms ref="form" :modelValue="formData"> <uni-forms-item label="姓名" name="name"> <uni-easyinput type="text" v-model="formData.name" placeholder="请输入姓名" /> </uni-forms-item> <uni-forms-item label="密码" name="password"> <uni-easyinput type="password" v-model="formData.password" placeholder="请输入密码" /> </uni-forms-item> </uni-forms> <button @click="submit">提交</button> </view> </template> <script setup> import { reactive, ref } from 'vue' // 引入,并实例化 useUserStore import {useUserStore} from '@/stores/userUserStore.js' const userStore = useUserStore() const formData = reactive({ name: 'LiMing', password: 'LiMing.com', }) // 触发提交表单 const submit = ()=>{ userStore.login(formData) } </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。