react+antdpro+ts实现企业级前端项目三:实现系统登陆
创始人
2024-05-31 04:07:39
0

一、页面版式修改

/pages/User/Login/index.tsx 登陆页面组件路径

那么我们需要做如下操作改造登陆页面:

  • 〈Lang /〉组件是为了实现国际化,可注释掉
  • 修改登陆框的主标题和子标题
  • 将通过用户密码登陆和手机号登陆根据项目实际情况修改成只支持帐密登陆
  • 将忘记密码修改成“注册用户”的连接,点击跳转到/user/register登陆页面
  • 注释掉下方的其他登陆方式栏目

最终实现的登陆页面效果如下:

由于此页面主要是调用了ant design pro的模块LoginForm ,具体修改的模块见下方代码。

{/*@umijs/plugin-helmet插件,实现动态修改HTML文档标签*/}{intl.formatMessage({id: 'menu.login',defaultMessage: '登录页',})}- {Settings.title}{/*实现国际化文字*/}{/**/}{flex: '1',padding: '32px 0',}}>{minWidth: 280,maxWidth: '75vw',}}logo={}// title="Ant Design"title="登陆"// subTitle={intl.formatMessage({id: 'pages.layouts.userLayout.title'})}subTitle='基于React+ant design Pro +Ts的企业级应用'initialValues={{autoLogin: true,}}// actions={[// ,// ,// ]}onFinish={async (values) => {await handleSubmit(values as API.LoginParams);}}>{/**/}{status === 'error' && loginType === 'account' && ()}{type === 'account' && (<>{size: 'large',prefix: ,}}placeholder={intl.formatMessage({id: 'pages.login.identifier.placeholder',defaultMessage: '请输入用户名',})}rules={[{required: true,message: (),},]}/>{size: 'large',prefix: ,}}placeholder={intl.formatMessage({id: 'pages.login.password.placeholder',defaultMessage: '请输入密码',})}rules={[{required: true,message: (),},]}/>)}{/*{status === 'error' && loginType === 'mobile' && }*/}{/*{type === 'mobile' && (*/}{/* <>*/}{/* {*/}{/* size: 'large',*/}{/* prefix: ,*/}{/* }}*/}{/* name="mobile"*/}{/* placeholder={intl.formatMessage({*/}{/* id: 'pages.login.phoneNumber.placeholder',*/}{/* defaultMessage: '手机号',*/}{/* })}*/}{/* rules={[*/}{/* {*/}{/* required: true,*/}{/* message: (*/}{/* */}{/* ),*/}{/* },*/}{/* {*/}{/* pattern: /^1\d{10}$/,*/}{/* message: (*/}{/* */}{/* ),*/}{/* },*/}{/* ]}*/}{/* />*/}{/* {*/}{/* size: 'large',*/}{/* prefix: ,*/}{/* }}*/}{/* captchaProps={{*/}{/* size: 'large',*/}{/* }}*/}{/* placeholder={intl.formatMessage({*/}{/* id: 'pages.login.captcha.placeholder',*/}{/* defaultMessage: '请输入验证码',*/}{/* })}*/}{/* captchaTextRender={(timing, count) => {*/}{/* if (timing) {*/}{/* return `${count} ${intl.formatMessage({*/}{/* id: 'pages.getCaptchaSecondText',*/}{/* defaultMessage: '获取验证码',*/}{/* })}`;*/}{/* }*/}{/* return intl.formatMessage({*/}{/* id: 'pages.login.phoneLogin.getVerificationCode',*/}{/* defaultMessage: '获取验证码',*/}{/* });*/}{/* }}*/}{/* name="captcha"*/}{/* rules={[*/}{/* {*/}{/* required: true,*/}{/* message: (*/}{/* */}{/* ),*/}{/* },*/}{/* ]}*/}{/* onGetCaptcha={async (phone) => {*/}{/* const result = await getFakeCaptcha({*/}{/* phone,*/}{/* });*/}{/* if (!result) {*/}{/* return;*/}{/* }*/}{/* message.success('获取验证码成功!验证码为:1234');*/}{/* }}*/}{/* />*/}{/* */}{/*)}*/}{marginBottom: 24,}}>{float: 'right',}}// 点击跳转注册页面onClick={() =>history.push({pathname: '/user/register',})}>注册用户

二、对接Strapi实现用户登陆

接下来要对接Strapi登陆模块,主要是点击登陆按钮,触发strapi的login接口,具体为点击登陆按钮后触发handleSubmit函数,此函数逻辑为将用户输入到帐号/密码传入login登陆函数,然后将返回到jwt和user保存到localStorage中去。此后触发fetchUserInfo函数,然后重定向到首页

 const handleSubmit = async (values: API.LoginParams) => {try {const msg = await login({identifier: values.identifier, password: values.password});message.success('登陆成功')localStorage.setItem("token", msg.jwt);localStorage.setItem("user", msg.user);await fetchUserInfo();history.push( '/');return;} catch (error) {const defaultLoginFailureMessage = intl.formatMessage({id: 'pages.login.failure',defaultMessage: '登录失败,请重试!',});message.error(defaultLoginFailureMessage);}};

/** 登录接口 POST /api/login/account */
export async function login(body: API.LoginParams, options?: { [key: string]: any }) {return request('/api/auth/local', {method: 'POST',// headers: {//   'Content-Type': 'application/json',// },data: body,...(options || {}),});
}
  const fetchUserInfo = async () => {//修改成从local storage获取用户信息const userInfo = localStorage.getItem('user')if (userInfo) {// @ts-ignoresetInitialState({currentUser: userInfo})}};

因此可实现登陆效果

相关内容

热门资讯

孩子我为什么要打你四年级作文... 孩子我为什么要打你四年级作文 篇一最近,我读了一篇关于家庭教育的文章,深受启发。这篇文章告诉我,作为...
四年级发生在我身边的一件事作... 四年级发生在我身边的一件事作文 篇一我和小猫的故事上周末,我在家玩耍时,突然听到门外传来一阵咿咿呀呀...
小学生四年级推普小作文【通用... 小学生四年级推普小作文 篇一我喜欢的动物我喜欢的动物是熊猫。熊猫是一种非常可爱的动物,它有着黑白相间...
无私奉献的秦老师【实用3篇】 无私奉献的秦老师 篇一秦老师是一位备受学生喜爱的教师,他以无私奉献的精神,默默地为学生们付出着自己的...
四年级作文小金鱼(最新3篇) 四年级作文小金鱼 篇一小金鱼是我家的新宠物,它在我的房间里游来游去,给我带来了无尽的乐趣。小金鱼是一...
最好的朋友四年级小学生优秀作... 最好的朋友四年级小学生优秀作文 篇一我最好的朋友是一个四年级的小学生,她叫小芳。我们从一年级开始就是...
我爱夏天-四年级作文【实用6... 我爱夏天-四年级作文 篇一夏天是我最喜欢的季节,因为它给我带来了无尽的欢乐和惊喜。每年的夏天,我都期...
四年级200字作文(精彩3篇... 四年级200字作文 篇一我的暑假计划暑假即将来临,我已经制定了自己的暑假计划。首先,我打算利用这个假...
四年级拟人句【精选3篇】 四年级拟人句 篇一小草的自述我是一株小草,生长在操场的角落里。虽然我只有绿色的叶子和细细的根,但我有...
百家筝鸣四年级作文(推荐3篇... 百家筝鸣四年级作文 篇一百家筝鸣四年级作文我喜欢听音乐,尤其是古典音乐。最近,我参加了学校的音乐课程...
我成长中的故事四年级作文【通... 我成长中的故事四年级作文 篇一我成长中的故事我是一个四年级的学生,从小到大,我有许多成长的故事。其中...
一杯苦茶四年级作文(实用3篇... 一杯苦茶四年级作文 篇一第一篇内容:一杯苦茶的故事春天的阳光透过窗户洒进教室,给人一种温暖的感觉。我...
我的暑假-My Summer... My Summer HolidayEssay 1:My Summer HolidaySummer i...
大自然的启示四年级作文【实用... 大自然的启示四年级作文 篇一大自然的启示大自然是我们生活中不可或缺的一部分,它给予了我们许多启示和教...
春天的小学四年级作文300字... 春天的小学四年级作文300字 篇一春天的快乐春天来了,大自然的脸庞也发生了翻天覆地的变化。我喜欢春天...
勇气伴我行作文四年级【精选6... 勇气伴我行作文四年级 篇一勇敢面对挑战每个人都有自己的梦想和目标,但要实现它们并不容易。面对困难和挑...
四年级干家务作文300字(优... 四年级干家务作文300字 篇一我的家务分工我是一名四年级的小学生,家里有四口人,爸爸、妈妈、我和弟弟...
简单的我四年级作文400字【... 简单的我四年级作文400字 篇一我的暑假生活暑假终于来了,我迫不及待地计划着要怎么度过这个快乐的假期...
舔犊之爱四年级作文(优秀3篇... 舔犊之爱四年级作文 篇一舔犊之爱我家养了一只可爱的小狗,它叫小白。小白是一只雪白的小贵宾犬,毛发柔软...
四年级的火锅美食作文500字... 篇一:四年级的火锅美食火锅是一道非常受欢迎的美食,无论是大人还是小孩,都喜欢在寒冷的冬天享受火锅的美...