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})}};

因此可实现登陆效果

相关内容

热门资讯

年终晚会主持词 年终晚会主持词范文集锦五篇  主持词是主持人在节目进行过程中用于串联节目的串联词。我们眼下的社会,主...
建筑理事会闭幕讲话 建筑理事会闭幕讲话  欢迎来到CN人才网,下面是小编精心为大家整理的建筑理事会闭幕讲话,希望对大家有...
新郎父亲在婚礼上的致辞 新郎父亲在婚礼上的致辞各位领导,各位亲朋好友,两位亲家:  上午好!今天,在儿子新婚之喜的时刻,借助...
通用主持词 通用主持词十篇  主持词要注意活动对象,针对活动对象写相应的主持词。在当今中国社会,主持词与我们不再...
首届文化节闭幕式主持词 首届文化节闭幕式主持词  活动对象的不同,主持词的写作风格也会大不一样。在一步步向前发展的社会中,各...
启动仪式主持词 启动仪式主持词(精选12篇)  由主持人于节目进行过程中串联节目的串联词。如今的各种演出活动和集会中...
员工大会主持词结束语分享 员工大会主持词结束语分享  一、 整理队形  徐:请各部门赶快入场,按指示牌站整齐。  二、 准备开...
班级毕业晚会主持词 班级2021年毕业晚会主持词  主持人在台上表演的灵魂就表现在主持词中。在当下的中国社会,司仪等是很...
白事主持词 白事主持词  主持词没有固定的格式,他的最大特点就是富有个性。在各种集会、活动不断增多的社会,主持成...
领导证婚人婚礼精彩致辞 领导证婚人婚礼精彩致辞(通用13篇)  在平平淡淡的学习、工作、生活中,大家都不可避免地要接触到致辞...
儿童节主持词 儿童节主持词(精选15篇)  主持人在台上表演的灵魂就表现在主持词中。现今社会在不断向前发展,主持人...
追悼会的主持词 关于追悼会的主持词范文(精选11篇)  根据活动对象的不同,需要设置不同的主持词。时代不断在进步,主...
《香水》经典台词 《香水》经典台词  在学习、工作生活中,越来越多人会去使用台词,台词起着交代人物关系和背景、进行剧情...
公司年会晚会主持词2019   公司年会晚会主持词2019【一】  甲(女):尊敬的曾总、王书记,亲爱的各位同事,  合:大家好...
学校元旦晚会主持稿开场白 学校元旦晚会主持稿开场白  主持词并没有固定的格式或者模板,个性就是主持词的特点。不同内容的活动,不...
乔迁之喜主持词 乔迁之喜主持词(通用13篇)  契合现场环境的主持词能给集会带来双倍的效果。在如今这个时代,我们对主...
小学元旦晚会主持词 有关小学元旦晚会主持词(通用8篇)  主持词已成为各种演出活动和集会中不可或缺的一部分。现今社会在不...
电视剧《神话》:台词非常雷人 电视剧《神话》:台词非常雷人  1:你是北电、中戏还是上戏  2:幸亏我那天在看完仙剑之后还不忘关注...
双簧剧本台词 双簧剧本台词双簧剧本台词如此双簧道具:椅子一把,化装白油彩,浸满水的手绢一条(开场,甲从舞台左边上场...
大会主持词 大会主持词15篇  活动对象的不同,主持词的写作风格也会大不一样。在当今社会生活中,司仪等是很多场合...