关于ant-design-pro与Java后台+mysql数据库实现简单的登录注册

这是我登录和注册写在service/api里面的方法
// 登录方法 才用POST方法 /server/api/代表的是之前的设置好的地址根据情况而定,static/user/login是后台接口

export async function fakeAccountLogin(params) {
return request(’/server/api/static/user/login’, {
method: ‘POST’,
body: params,
});
}

// 注册方法,与登录一样
export async function fakeRegister(params) {
return request(’/server/api/static/user/register’, {
method: ‘POST’,
body: params,
});
}
注册中的模型代码
import { fakeRegister } from ‘@/services/api’;
import { setAuthority } from ‘@/utils/authority’;
import { reloadAuthorized } from ‘@/utils/Authorized’;

export default {
namespace: ‘register’,

state: {
status: undefined,
},

effects: {
* submit({ payload }, { call, put }) {
const response = yield call(fakeRegister, payload);
yield put({
type: ‘registerHandle’,
payload: response,
});
},
},

reducers: {
registerHandle(state, action) {

  let items= action.payload
  console.log(action.payload)
 //console.log(alert(items.result))

    if(items.result===1) {
      return { status:'ok' };
    }else {
      return { status:'false' };
    }
  return {
    ...state,
    status: {
      ...state.status,
     ...action.payload,

    }
  };
  },

},
};

注册页面代码
import React, { Component } from ‘react’;
import { connect } from ‘dva’;
import { formatMessage, FormattedMessage } from ‘umi/locale’;
import Link from ‘umi/link’;
import router from ‘umi/router’;
import { Form, Input, Button, Select, Row, Col, Popover, Progress, message } from ‘antd’;
import styles from ‘./Register.less’;

const FormItem = Form.Item;
const { Option } = Select;
const InputGroup = Input.Group;

const passwordStatusMap = {
ok: (




),
pass: (



),
poor: (



),
};

const passwordProgressMap = {
ok: ‘success’,
pass: ‘normal’,
poor: ‘exception’,

};

@connect(({ register, loading }) => ({
register,
submitting: loading.effects[‘register/submit’],

}))
@Form.create()
class Register extends Component {
state = {
count: 0,
confirmDirty: false,
visible: false,
help: ‘’,
prefix: ‘86’,
};

componentDidUpdate() {

const { form, register } = this.props;
if (register.status === 'ok') {
  router.push({
    pathname: '/user/register-result',
  });
}
if (register.status === 'false') {
  router.push({
    pathname: '/user/register-result-false',
  });
}

}

componentWillUnmount() {
clearInterval(this.interval);
location.reload();
}
// 验证码倒计时
onGetCaptcha = () => {
let count = 59;
this.setState({ count });
this.interval = setInterval(() => {
count -= 1;
this.setState({ count });
if (count === 0) {
clearInterval(this.interval);
}
}, 1000);
};
// 密码长度验证
getPasswordStatus = () => {
const { form } = this.props;
const value = form.getFieldValue(‘password’);
if (value && value.length > 9) {
return ‘ok’;
}
if (value && value.length > 5) {
return ‘pass’;
}
return ‘poor’;
};
// 提交信息
handleSubmit = e => {
e.preventDefault();
const { form, dispatch,register } = this.props;
form.validateFields({ force: true }, (err, values) => {
if (!err) {
const { prefix } = this.state;
dispatch({
type: ‘register/submit’,
payload: {
…values,
prefix,
},
});
}
});

};

handleConfirmBlur = e => {
const { value } = e.target;
const { confirmDirty } = this.state;
this.setState({ confirmDirty: confirmDirty || !!value });
};
// 检验两次密码是否一致
checkConfirm = (rule, value, callback) => {
const { form } = this.props;
if (value && value !== form.getFieldValue(‘password’)) {
callback(formatMessage({ id: ‘validation.password.twice’ }));
} else {
callback();
}
};
// 检验两次密码是否一致
checkPassword = (rule, value, callback) => {
const { visible, confirmDirty } = this.state;
if (!value) {
this.setState({
help: formatMessage({ id: ‘validation.password.required’ }),
visible: !!value,
});
callback(‘error’);
} else {
this.setState({
help: ‘’,
});
if (!visible) {
this.setState({
visible: !!value,
});
}
if (value.length < 6) {
callback(‘error’);
} else {
const { form } = this.props;
if (value && confirmDirty) {
form.validateFields([‘confirm’], { force: true });
}
callback();
}
}
};

changePrefix = value => {
this.setState({
prefix: value,
});
};
// 密码提示
renderPasswordProgress = () => {
const { form } = this.props;
const value = form.getFieldValue(‘password’);
const passwordStatus = this.getPasswordStatus();
return value && value.length ? (

progress-${passwordStatus}]}>
status={passwordProgressMap[passwordStatus]}
className={styles.progress}
strokeWidth={6}
percent={value.length * 10 > 100 ? 100 : value.length * 10}
showInfo={false}
/>

) : null;
};

render() {
const { form, submitting } = this.props;
const { getFieldDecorator } = form;
const { count, prefix, help, visible } = this.state;
return (






{/ // 邮箱输入以及邮箱格式/}

{getFieldDecorator(‘mail’, {
rules: [
{
required: true,
message: formatMessage({ id: ‘validation.email.required’ }),
},
{
type: ‘email’,
message: formatMessage({ id: ‘validation.email.wrong-format’ }),
},
],
})(

)}

{/ // 用户名输入/}

{getFieldDecorator(‘username’, {
rules: [
{
required: true,
message: formatMessage({ id: ‘validation.userName.required’ }),
},
// {
// type: ‘email’,
// message: formatMessage({ id: ‘validation.email.wrong-format’ }),
// },
],
})(

)}

{/ 密码提示位置/}

getPopupContainer={node => node.parentNode}
content={

{passwordStatusMap[this.getPasswordStatus()]}
{this.renderPasswordProgress()}




}
overlayStyle={{ width: 240 }}
placement=“right”
visible={visible}
>
{getFieldDecorator(‘password’, {
rules: [
{
validator: this.checkPassword,
},
],
})(
size=“large”
type=“password”
placeholder={formatMessage({ id: ‘form.password.placeholder’ })}
/>
)}


{/ 确认密码/}

{getFieldDecorator(‘confirm’, {
rules: [
{
required: true,
message: formatMessage({ id: ‘validation.confirm-password.required’ }),
},
{
validator: this.checkConfirm,
},
],
})(
size=“large”
type=“password”
placeholder={formatMessage({ id: ‘form.confirm-password.placeholder’ })}
/>
)}

{/ 手机号/}