HarmonyOS应用开发:鸿蒙系统中实现自动登录功能

在应用开发时,我们常需要将一些数据缓存到本地,以提升用户体验。比如在一个电商的 App 中,如果希望用户登录成功后,下次打开 App 可以自动登录,就需要将用户信息存储到缓存中。

鸿蒙 JS 开发模式提供了操作数据缓存的 API,首先需导入 storage 模块。

import storage from '@system.storage';

添加缓存的 API 为 storage.set( ),指定 key 和 value,在用户登录成功后将用户名和密码缓存到本地:

// 登录
    login() {
        fetch.fetch({
            url: this.url + "/user/login?phone=" + this.phone + "&pwd=" + this.pwd,
            responseType: "json",
            success: res => {
                let data = JSON.parse(res.data);
                console.info(JSON.stringify(data));
                if (0 != data.code) {
                    prompt.showToast({
                        message: data.msg,
                        duration: 3000
                    })
                } else {
                    let userInfo = data.data;
                    ......
                    // 写入缓存
                    storage.set({
                        key: "userPhone",
                        value: userInfo.mobile
                    });
                    storage.set({
                        key: "userPwd",
                        value: userInfo.password
                    })
                }
            }
        })
    },

注意,鸿蒙 JS 的数据缓存 API 是以 key:value 进行存取的,value 只能为 string 类型。

如存储其他类型,并不会失败而进入 fail 回调,但在使用 get( ) 的时候会无法取到对应 value 的。

在进入 App 时,便可调用 storage.get( ) 取出缓存中的用户信息,通过给定 key,在 success 回调中会返回对应的 value。

取到用户信息后并调用登录方法实现自动登录功能。

    onShow() {
        // 从其他页面跳转回来,清除页面栈
        router.clear();
        // 从缓存取用户信息,自动登录
        storage.get({
            key: "userPhone",
            success: data => {
                if (data) {
                    this.phone = data;
                    storage.get({
                        key: "userPwd",
                        success: data => {
                            if (data) {
                                this.pwd = data;
                                this.login();
                            }
                        }
                    })
                }
            }
        })
        // 查询购物车数量
        if (this.userInfo && this.userInfo.id) {
            this.countCarts();
        }
    },

效果如下:

图片

删除缓存中数据的 API 为 storage.delete( ),指定 key 即可删除对应数据。

此方法在 IDE 中无提示(猜测是和 delete 关键词重复了),但经实验是可以正常使用的。

图片

在用户退出登录后,应清除缓存中的用户信息。

对应方法如下:

    // 退出登录
    exitLogin() {
        prompt.showDialog({
            title: "提示",
            message: "确认退出登录吗?",
            buttons: [
                {
                    text: "确定",
                    color: "#E20A0B"
                },
                {
                    text: "取消",
                    color: "#666666"
                }
            ],
            success: res => {
                if (res.index == 0) {
                    ......
                    // 删除缓存中用户信息
                    storage.delete({
                        key: "userPhone"
                    });
                    storage.delete({
                        key: "userPwd"
                    });
                    this.userInfo = null;
                }
            }
        })
    }

退出登录过后再次进入 App,就不会自动登录了:

图片

此外还有 storage.clear( ) 方法用于清空所有的数据缓存。

微信小程序提供了类似的操作数据缓存的方法,分为同步方法和异步方法,且数据的 value 可为任何能够通过 JSON.stringify 序列化的对象。

因此在从微信小程序切换到鸿蒙 JS 开发时,在数据缓存这里踩了坑。

鸿蒙 storage 的 value 只能为 string,但其提供了文件存储,拥有更强大的数据存储能力。

图片

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?但是又不知道从哪里下手,而且学习时频繁踩坑,最终浪费大量时间。所以本人整理了一些比较合适的鸿蒙(HarmonyOS NEXT)学习路径和一些资料的整理供小伙伴学习

点击领取→纯血鸿蒙Next全套最新学习资料希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取~~

一、鸿蒙(HarmonyOS NEXT)最新学习路线

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)…等技术知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

二、HarmonyOS Next 最新全套视频教程

三、《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

四、大厂面试必问面试题

五、鸿蒙南向开发技术

六、鸿蒙APP开发必备


完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值