完善私钥验证
This commit is contained in:
1 parent
72f7dd5dc6
commit
6c7cb6b0e7
13 files changed
+203
-70
No files matched your search
@@ -19,3 +19,6 @@
|
||||
margin-top: -189px;
|
||||
}
|
||||
|
||||
.login-bg{
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTM2MXB4IiBoZWlnaHQ9IjYwOXB4IiB2aWV3Qm94PSIwIDAgMTM2MSA2MDkiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDQ2LjIgKDQ0NDk2KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5Hcm91cCAyMTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJBbnQtRGVzaWduLVByby0zLjAiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLotKbmiLflr4bnoIHnmbvlvZUt5qCh6aqMIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNzkuMDAwMDAwLCAtODIuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJHcm91cC0yMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzcuMDAwMDAwLCA3My4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xOCIgb3BhY2l0eT0iMC44IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3NC45MDE0MTYsIDU2OS42OTkxNTgpIHJvdGF0ZSgtNy4wMDAwMDApIHRyYW5zbGF0ZSgtNzQuOTAxNDE2LCAtNTY5LjY5OTE1OCkgdHJhbnNsYXRlKDQuOTAxNDE2LCA1MjUuMTk5MTU4KSI+CiAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgaWQ9Ik92YWwtMTEiIGZpbGw9IiNDRkRBRTYiIG9wYWNpdHk9IjAuMjUiIGN4PSI2My41NzQ4NzkyIiBjeT0iMzIuNDY4MzY3IiByeD0iMjEuNzgzMDQ3OSIgcnk9IjIxLjc2NjAwOCI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLTMiIGZpbGw9IiNDRkRBRTYiIG9wYWNpdHk9IjAuNTk5OTk5OTY0IiBjeD0iNS45ODc0NjQ3OSIgY3k9IjEzLjg2Njg2MDEiIHJ4PSI1LjIxNzM5MTMiIHJ5PSI1LjIxMzMwOTk3Ij48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTM4LjEzNTQ1MTQsODguMzUyMDIxNSBDNDMuODk4NDIyNyw4OC4zNTIwMjE1IDQ4LjU3MDIzNCw4My42ODM4NjQ3IDQ4LjU3MDIzNCw3Ny45MjU0MDE1IEM0OC41NzAyMzQsNzIuMTY2OTM4MyA0My44OTg0MjI3LDY3LjQ5ODc4MTYgMzguMTM1NDUxNCw2Ny40OTg3ODE2IEMzMi4zNzI0ODAxLDY3LjQ5ODc4MTYgMjcuNzAwNjY4OCw3Mi4xNjY5MzgzIDI3LjcwMDY2ODgsNzcuOTI1NDAxNSBDMjcuNzAwNjY4OCw4My42ODM4NjQ3IDMyLjM3MjQ4MDEsODguMzUyMDIxNSAzOC4xMzU0NTE0LDg4LjM1MjAyMTUgWiIgaWQ9Ik92YWwtMy1Db3B5IiBmaWxsPSIjQ0ZEQUU2IiBvcGFjaXR5PSIwLjQ1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY0LjI3NzU1ODIsMzMuMTcwNDk2MyBMMTE5LjE4NTgzNiwxNi41NjU0OTE1IiBpZD0iUGF0aC0xMiIgc3Ryb2tlPSIjQ0ZEQUU2IiBzdHJva2Utd2lkdGg9IjEuNzM5MTMwNDMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00Mi4xNDMxNzA4LDI2LjUwMDI2ODEgTDcuNzExOTAxNjIsMTQuNTY0MDcwMiIgaWQ9IlBhdGgtMTYiIHN0cm9rZT0iI0UwQjRCNyIgc3Ryb2tlLXdpZHRoPSIwLjcwMjY3ODk2NCIgb3BhY2l0eT0iMC43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1kYXNoYXJyYXk9IjEuNDA1MzU3ODk5ODczMTUzLDIuMTA4MDM2OTUzNDY5OTgxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYzLjkyNjIxODcsMzMuNTIxNTYxIEw0My42NzIxMzI2LDY5LjMyNTA5NTEiIGlkPSJQYXRoLTE1IiBzdHJva2U9IiNCQUNBRDkiIHN0cm9rZS13aWR0aD0iMC43MDI2Nzg5NjQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLWRhc2hhcnJheT0iMS40MDUzNTc4OTk4NzMxNTMsMi4xMDgwMzY5NTM0Njk5ODEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyNi44NTA5MjIsIDEzLjU0MzY1NCkgcm90YXRlKDMwLjAwMDAwMCkgdHJhbnNsYXRlKC0xMjYuODUwOTIyLCAtMTMuNTQzNjU0KSB0cmFuc2xhdGUoMTE3LjI4NTcwNSwgNC4zODE4ODkpIiBmaWxsPSIjQ0ZEQUU2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgaWQ9Ik92YWwtNCIgb3BhY2l0eT0iMC40NSIgY3g9IjkuMTM0ODI2NTMiIGN5PSI5LjEyNzY4MDc2IiByeD0iOS4xMzQ4MjY1MyIgcnk9IjkuMTI3NjgwNzYiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE4LjI2OTY1MzEsMTguMjU1MzYxNSBDMTguMjY5NjUzMSwxMy4yMTQyODI2IDE0LjE3OTg1MTksOS4xMjc2ODA3NiA5LjEzNDgyNjUzLDkuMTI3NjgwNzYgQzQuMDg5ODAxMTQsOS4xMjc2ODA3NiAwLDEzLjIxNDI4MjYgMCwxOC4yNTUzNjE1IEwxOC4yNjk2NTMxLDE4LjI1NTM2MTUgWiIgaWQ9Ik92YWwtNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4xMzQ4MjcsIDEzLjY5MTUyMSkgc2NhbGUoLTEsIC0xKSB0cmFuc2xhdGUoLTkuMTM0ODI3LCAtMTMuNjkxNTIxKSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxNi4yOTQ3MDAsIDEyMy43MjU2MDApIHJvdGF0ZSgtNS4wMDAwMDApIHRyYW5zbGF0ZSgtMjE2LjI5NDcwMCwgLTEyMy43MjU2MDApIHRyYW5zbGF0ZSgxMDYuMjk0NzAwLCAzNS4yMjU2MDApIj4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0yIiBmaWxsPSIjQ0ZEQUU2IiBvcGFjaXR5PSIwLjI1IiBjeD0iMjkuMTE3NjQ3MSIgY3k9IjI5LjE0MDI0MzkiIHJ4PSIyOS4xMTc2NDcxIiByeT0iMjkuMTQwMjQzOSI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLTIiIGZpbGw9IiNDRkRBRTYiIG9wYWNpdHk9IjAuMyIgY3g9IjI5LjExNzY0NzEiIGN5PSIyOS4xNDAyNDM5IiByeD0iMjEuNTY4NjI3NSIgcnk9IjIxLjU4NTM2NTkiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0yLUNvcHkiIHN0cm9rZT0iI0NGREFFNiIgb3BhY2l0eT0iMC40IiBjeD0iMTc5LjAxOTYwOCIgY3k9IjEzOC4xNDYzNDEiIHJ4PSIyMy43MjU0OTAyIiByeT0iMjMuNzQzOTAyNCI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLTIiIGZpbGw9IiNCQUNBRDkiIG9wYWNpdHk9IjAuNSIgY3g9IjI5LjExNzY0NzEiIGN5PSIyOS4xNDAyNDM5IiByeD0iMTAuNzg0MzEzNyIgcnk9IjEwLjc5MjY4MjkiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjkuMTE3NjQ3MSwzOS45MzI5MjY4IEwyOS4xMTc2NDcxLDE4LjM0NzU2MSBDMjMuMTYxNjM1MSwxOC4zNDc1NjEgMTguMzMzMzMzMywyMy4xNzk2MDk3IDE4LjMzMzMzMzMsMjkuMTQwMjQzOSBDMTguMzMzMzMzMywzNS4xMDA4NzgxIDIzLjE2MTLine truncated
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
import React, {Component} from 'react';
|
||||
import {Button, Card, Checkbox, Form, Input} from "antd";
|
||||
import {Button, Card, Checkbox, Form, Input, Typography} from "antd";
|
||||
import './Login.css'
|
||||
import request from "../common/request";
|
||||
import {message} from "antd/es";
|
||||
import {withRouter} from "react-router-dom";
|
||||
import {
|
||||
UserOutlined, LockOutlined
|
||||
} from '@ant-design/icons';
|
||||
import {LockOutlined, UserOutlined} from '@ant-design/icons';
|
||||
|
||||
|
||||
const {Title} = Typography;
|
||||
|
||||
class LoginForm extends Component {
|
||||
|
||||
@@ -48,9 +49,12 @@ class LoginForm extends Component {
|
||||
};
|
||||
|
||||
render() {
|
||||
|
||||
return (
|
||||
<Card className='login-card' title="登录">
|
||||
<div className='login-bg' style={{width: window.innerWidth, height: window.innerHeight, backgroundColor: '#F0F2F5'}}>
|
||||
<Card className='login-card' title={null}>
|
||||
<div style={{textAlign: "center", margin: '15px auto 30px auto', color: '#1890ff'}}>
|
||||
<Title level={1}>Next Terminal</Title>
|
||||
</div>
|
||||
<Form onFinish={this.handleSubmit} className="login-form">
|
||||
<Form.Item name='username' rules={[{required: true, message: '请输入登录账号!'}]}>
|
||||
<Input prefix={<UserOutlined/>} placeholder="登录账号"/>
|
||||
@@ -71,6 +75,8 @@ class LoginForm extends Component {
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Card>
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -766,12 +766,12 @@ class Access extends Component {
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
||||
<div className="container" style={{
|
||||
overflow: this.state.containerOverflow,
|
||||
width: this.state.containerWidth,
|
||||
height: this.state.containerHeight
|
||||
}}>
|
||||
|
||||
<div id="display"/>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -17,6 +17,14 @@ const AssetModal = function ({title, visible, handleOk, handleCancel, confirmLoa
|
||||
setAccountType(model.accountType);
|
||||
});
|
||||
|
||||
for (let key in model) {
|
||||
if (model.hasOwnProperty(key)) {
|
||||
if (model[key] === '-') {
|
||||
model[key] = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const formItemLayout = {
|
||||
labelCol: {span: 6},
|
||||
wrapperCol: {span: 14},
|
||||
@@ -54,7 +62,7 @@ const AssetModal = function ({title, visible, handleOk, handleCancel, confirmLoa
|
||||
<Modal
|
||||
title={title}
|
||||
visible={visible}
|
||||
maskClosable={true}
|
||||
maskClosable={false}
|
||||
onOk={() => {
|
||||
form
|
||||
.validateFields()
|
||||
@@ -62,7 +70,8 @@ const AssetModal = function ({title, visible, handleOk, handleCancel, confirmLoa
|
||||
form.resetFields();
|
||||
handleOk(values);
|
||||
})
|
||||
.catch(info => {});
|
||||
.catch(info => {
|
||||
});
|
||||
}}
|
||||
onCancel={handleCancel}
|
||||
confirmLoading={confirmLoading}
|
||||
@@ -103,7 +112,7 @@ const AssetModal = function ({title, visible, handleOk, handleCancel, confirmLoa
|
||||
}}>
|
||||
<Option value="custom">自定义</Option>
|
||||
<Option value="credential">授权凭证</Option>
|
||||
<Option value="secret-key">密钥</Option>
|
||||
<Option value="private-key">私钥</Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
@@ -143,10 +152,17 @@ const AssetModal = function ({title, visible, handleOk, handleCancel, confirmLoa
|
||||
}
|
||||
|
||||
{
|
||||
accountType === 'secret-key' ?
|
||||
<Form.Item label="私钥" name='passphrase' rules={[{required: true, message: '请输入私钥'}]}>
|
||||
<TextArea rows={4}/>
|
||||
</Form.Item>
|
||||
accountType === 'private-key' ?
|
||||
<>
|
||||
<Form.Item label="私钥" name='privateKey' rules={[{required: true, message: '请输入私钥'}]}>
|
||||
<TextArea rows={4}/>
|
||||
</Form.Item>
|
||||
<Form.Item label="私钥密码" name='passphrase'>
|
||||
<TextArea rows={1}/>
|
||||
</Form.Item>
|
||||
</>
|
||||
|
||||
|
||||
: null
|
||||
}
|
||||
</Form>
|
||||
|
||||
@@ -481,12 +481,14 @@ class OfflineSession extends Component {
|
||||
|
||||
<Modal
|
||||
title="会话回放"
|
||||
centered
|
||||
visible={this.state.playbackVisible}
|
||||
onCancel={this.hidePlayback}
|
||||
|
||||
width={window.innerWidth * 0.8}
|
||||
footer={null}
|
||||
destroyOnClose
|
||||
maskClosable={false}
|
||||
>
|
||||
<Playback sessionId={this.state.playbackSessionId}/>
|
||||
</Modal>
|
||||
|
||||
@@ -477,6 +477,7 @@ class OnlineSession extends Component {
|
||||
className='monitor'
|
||||
title={this.state.sessionTitle}
|
||||
centered
|
||||
maskClosable={false}
|
||||
visible={this.state.accessVisible}
|
||||
footer={null}
|
||||
width={window.innerWidth * 0.8}
|
||||
|
||||
Reference in new issue
Block a user