React|登録およびログインの実装コスト
会員収入
ゆうこうかじゅう
ペイロード(payload)は、伝送されたデータを表す.データを転送するときに、タイトル、メタデータ、エラーチェックビットなどのさまざまな要素を一緒に送信することで、データ転送の効率と信頼性を向上させることができます.
これは、送信するデータ自体がペイロードであることを意味します.私たちが宅配便を送ったり受け取ったりするとき、宅配便の貨物は有効荷重ですが、領収書や箱、マットなどの緩衝材などは付加されているので、有効荷重ではありません.
jsonで表示される実際のデータでは、ペイロードは次のjsonで「data」です.それ以外のすべてのデータは通信面の補助情報である.
{
"status" :
"from": "localhost",
"to": "http://melonicedlatte.com/chatroom/1",
"method": "GET",
"data":{ "message" : "There is a cutty dog!" }
}
https://www.notion.so/d61112fa19984e28b36bcd2fdad2064f パスワードをtest 001に設定し、会員登録ボタンを押すとロードエラーが発生します.
お客様のパスワード検証では、少なくとも8文字を超える必要がありますが、エラーが8文字を超えるため、ペイロードが容易に超えられます.
要求をクライアント・サーバに送信し、要求を処理します(コストを追加した後)
返事をもらった.
var Customer = Clayful.Customer;
var payload = {
email: 'email',
password: 'password',
};
console.log("payload",payload); //30번째 줄
Customer.createMe(payload, function(err, result) {
if (err) {
// Error case
console.log(err.code);
}
var data = result.data;
console.log(data); //41번째 줄
});
いつ作成されたのか、メールが何なのかなど、返事が来ました.ログイン・ページは、登録コストの後に移動します。
react-router-domが提供するuserNavigate Hooksを使用します.
userNavigateに接続します.
import React, { useState } from 'react'
import { Link, useNavigate } from 'react-router-dom'
import clayful from 'clayful/client-js'
function RegisterPage() {
const navigate = useNavigate();
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
navigate("/가려고하는페이지");
に接続し、登録に成功した場合はログインページに移動します.メールが重複しているため、エラーが発生します.
会員加入に成功したら、ログインページに入ります.
ログイン
ログインUIは会員入力とほぼ類似しているため、インポートされて使用され、同様にuserStateが使用されている.
import React, { useState } from 'react'
import { Link } from 'react-router-dom'
import clayful from 'clayful/client-js'
function LoginPage() {
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const handleEmailChange = (event) => {
setEmail(event.target.value);
}
const handlePasswordChange = (event) => {
setPassword(event.target.value);
}
const handleSubmit = (event) => {
event.preventDefault();
var Customer = clayful.Customer;
var payload = {
email,
password
};
Customer.authenticate(payload, function(err, result) {
if (err) {
// Error case
console.log(err.code);
}
var data = result.data;
console.log(data);
});
}
return (
<div className='auth-wrapper'>
<h1>로그인.</h1>
<form onSubmit={handleSubmit}>
<input
onChange={handleEmailChange}
placeholder='Apple ID'
type="email"
name="email"
value={email}
/>
<input
onChange={handlePasswordChange}
placeholder='암호'
type="password"
name="password"
value={password}
/>
<p>
Apple ID는 아이튠즈, 앱스토어, 아이클라우드에 로그인할 때 필요하니 꼭 만들어주세요요~!
</p>
<button type='submit' className='btn-register'>로그인</button>
<Link to="register" style={{ color: "gray", textDecoration: "none" }}>
{""}
Apple ID가 없으신가요? 지금 생성.
</Link>
</form>
</div>
)
}
export default LoginPage
ログインに成功すると、クライアントのログインを必要とするAPI(*ForMeシリーズ)用のクライアント認証トークン(token)が返されます.{
"customer": "XJUMY4ZD4PKY",
"token": "<customer-auth-token>",
"expiresIn": 604800
}
**customer
:**お客様の固有IDを返します**expiresIn**
:検証トークンは数秒後に期限切れになります.**token
:**は、顧客認証トークンを返します.ローカルストレージにトークンを保持
トークンは、実際には、ユーザがログインしているかどうか、有効なユーザであるかどうか、リクエストを発行できるかどうかを判断するトークンである.リクエストを発行するために使用されるため、ブラウザでタグを保持できます.
var data = result.data;
localStorage.setItem("customerUid", data.customer);
localStorage.setItem("accessToken", data.token);
console.log(data);
これにより、コードを作成して再ログインし、key&valueとして保存できます.ログインが成功したら、ホームページに移動します。
Customer.authenticate(payload, function(err, result) {
if (err) {
// Error case
console.log(err.code);
return; //return이 있어야 아래로 내려가지 않고 멈춘다.
}
var data = result.data;
localStorage.setItem("customerUid", data.customer);
localStorage.setItem("accessToken", data.token);
// console.log(data);
navigate("/"); //메인으로 이동
});
会員登録窓口と同様に、UserNavigate Hooksを使って登録ボタンをクリックすると、ホームページにアクセスできます.成功200~!
ソース
http://melonicedlatte.com/web/2020/01/14/205200.html
Reference
この問題について(React|登録およびログインの実装コスト), 我々は、より多くの情報をここで見つけました https://velog.io/@po05360/react-회원가입-로그인-구현テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol