react ~2.登陆页面验证码的获取传递与刷新

import React from ‘react‘;
import { withRouter } from ‘react-router-dom‘;
import { Form, Input, Icon, Checkbox, Row, message } from ‘antd‘;

import { fetchPost, fetchGet } from ‘@common/js/Fetch.js‘;
import fbank from ‘../images/fbank.png‘;
import ‘../css/loginform.scss‘;

const FormItem = Form.Item;

class LoginForm extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
            rememberEmail: ‘‘,
            imgUrl: MI.baseURI + `/captcha/get?id=` + Math.random()
        };
    }

    componentDidMount() {
        //判断本地是否记住了邮箱地址
        if (localStorage.getItem(‘user_email‘) !== null) {
            this.setState({
                rememberEmail: localStorage.getItem(‘login_email‘)
            });
        }
    }

    /**
     * 提交登录
     */
    handleSubmit = (e) => {

        e.preventDefault();
        this.props.form.validateFields((err, values) => {
            if (!err) {
                const data = {
                    "loginName": values.email,
                    "password": values.password,
                    "captcha": values.captcha
                };
                const apiUrl = `${MI.baseURI}/sys/login`;
                fetchPost(apiUrl, data).then((response) => {
                    if (response.success) {
                        message.success(‘登陆成功‘);
                        //如果用户选择记住账户
                        //则将写入本地存储localstorage中
                        if (values.remember == true) {
                            localStorage.setItem("user_email", response.data.userName);
                            localStorage.setItem("login_email", response.data.loginName);
                        }

                                //跳转到登录后的页面
                                this.props.history.push(‘/operation/product‘);
                            }
                        });

                    } else {
                        this.getCaptcha();
                        message.error(response.msg);
                    }
                });
            }
        });
    }

    /**
     * 刷新验证码
     */
    getCaptcha() {
        this.setState({
            //在后面加上一个无用的参数id实现验证码刷新
            imgUrl: MI.baseURI + `/captcha/get?id=` + Math.random()
        });
    }

    render() {
        const { getFieldDecorator } = this.props.form;
        return (
            <div className="login-wrapper">
                <div className="login-content" >
                    <img className="company-logo" src={fbank}/>
                    <span className="company-name">重庆富民银行开放后台管理系统</span>
                    <Form onSubmit={this.handleSubmit}>
                        <FormItem>
                            {getFieldDecorator(‘email‘, {
                                initialValue: this.state.rememberEmail,
                                rules: [{
                                    required: true, message: ‘请输入你的账号!‘
                                }]
                            })(
                                <Input prefix={<Icon type="user" className="pre-icon" />} placeholder="账号" className="login-input"/>
                            )}
                        </FormItem>
                        <FormItem>
                            {getFieldDecorator(‘password‘, {
                                rules: [{ required: true, message: ‘请输入你的密码!‘ }],
                            })(
                                <Input prefix={<Icon type="lock" className="pre-icon" />} type="password" placeholder="密码" className="login-input"/>
                            )}
                        </FormItem>
                        <FormItem>
                            <Row style={{ display: ‘flex‘ }}>
                                {getFieldDecorator(‘captcha‘, {
                                    rules: [{ required: true, message: ‘请输入验证码!‘ }],
                                })(
                                    <Input type="text" placeholder="验证码" className="code-input" />
                                )}
                                <div className="login-captcha">
                                    <div>
                                        <img src={this.state.imgUrl} key={this.state.key} />
                                    </div>
                                    <a className=‘change-code‘ onClick={this.getCaptcha.bind(this)}>换一张</a>
                                </div>
                            </Row>
                        </FormItem>
                        <FormItem className="remember-password">
                            {getFieldDecorator(‘remember‘, {
                                valuePropName: ‘checked‘,
                                initialValue: true,
                            })(
                                <Checkbox style={{ fontSize: 14, color: ‘#636570‘ }}>记住账号</Checkbox>
                            )}
                        </FormItem>
                        <button type="submit" className="button-login">登录</button>
                    </Form>

                </div>
            </div>
        );
    }
}

export default withRouter(Form.create()(LoginForm));

原文地址:https://www.cnblogs.com/sunshineForFuture/p/10342280.html

时间: 2024-10-11 16:17:16

react ~2.登陆页面验证码的获取传递与刷新的相关文章

jsp登陆页面验证码在火狐浏览器不能刷新问题处理方案

jsp登陆页面在火狐浏览器验证码不能刷新问题处理方案: <img src="YzmServlet" onClick="this.src='YzmServlet?time='+new Date()" width="59" height="20" style="width: 86px; height: 25px"> 关键代码:?time='+new Date() 如果不加入以上关键代码部分会导致在不

Android笔记-4-实现登陆页面并跳转和简单的注册页面

实现登陆页面并跳转和简单的注册页面 首先我们来看看布局的xml代码 login.xml <span style="font-family:Arial;font-size:18px;"><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面

原文:http://blog.csdn.net/jkingcl/article/details/10989773 今天我们主要来介绍登陆页面的实现,主要讲解的就是涉及到的布局,以及简单的跳转需要用到的代码. 首先我们来看看布局的xml代码 login.xml [html] view plaincopy <span style="font-family:Arial;font-size:18px;"><?xml version="1.0" encodi

登陆页面实现保存帐号密码功能

通过Cookie实现"记住我"的功能 1.登陆页面如下: 每个字段对应的属性name如下表: 用户帐号 name 登陆密码 password 验证码 checkNum 记住我 rememberMe 2.Action中的处理如下: 在用户第一次登陆后,进行Cookie进行处理 登陆处理: /**登陆*/ public String login() throws Exception{ //处理验证码:判断验证码输入的是否正确 boolean flag=VerificationCodeUti

注册/登陆界面验证码的作用及代码实现

简介: 验证码的作用:主要是为了有效防止机器恶意注册,对某一个特定已注册用户用特定程序暴力破解方式进行不断的登陆尝试.验证码是现在很多网站注册/登录时必填的,虽然对用户可能有点麻烦,但是对网站/社区来说这个功能还是很有必要,也很重要,不少网站为了防止用户利用机器人自动注册.登录.灌水,都采用了验证码技术.所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能.在这里想要提醒

用js制作163登陆页面终极版(写了一晚上)

用js制作163登陆页面终极版(写了一晚上),有些功能还不太完善,有兴趣的可以去自己再实现一些功能,基本上所有的功能我都实现了,只有少数的没有实现,里面还有一些正则表达式的运用,主要还是用表格设计的,没有用div,下次上传div的. 下面看HTML代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>mischen

Python实现新浪微博登陆!验证码?反爬?在我这里是不存在的!

抓包分析 首先打开charles,记录从打开浏览器到新浪微博登陆成功的全部http请求 打开新浪微博,等待页面加载完成后,输入账号密码点击登陆,charles停止抓包,关闭浏览器.并将抓包结果进行保存. 找到登陆的POST请求https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19) 登陆POST请求 进群:548377875   即可获取数十套PDF哦! 理论上我们只需要能完整的提交这个表单就能实现新浪微博的登陆.但是

转:Web页面通过URL地址传递参数常见问题及检测方法

Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述其实现原理.特点和常见问题,最后介绍检测该方式常见应用问题的测试思路和方法. 1.web页面的概念 Web是internet上一个非常重要的资源信息网,产生于20世纪90年代初,它遵循超文本传输协议,以超文本或超媒介的形式传送各种各样的信息,为用户提供了一个具有友好的图形化界面--Web页面,以便用

aiax登陆页面

登陆页面 <title>无标题文档</title> <script src="../jquery-1.11.2.min.js"></script> </head> <body> <h1>登陆</h1> <div>用户名:<input type="text" id="uid" /></div> <div>密