当前位置: 首页 > wzjs >正文

做网站的案例网站建设微信公众号小程序app

做网站的案例,网站建设微信公众号小程序app,php 网站后台模板,站长工具seo综合查询 正品蓝导航下面是一个用 React 实现 JWT 登录验证的最小可运行示例,包含: React 前端:登录、保存 Token、获取用户数据。模拟后端:用 mock API(你也可以接真后端)。 🧱 技术栈 React(使用 Vi…

下面是一个用 React 实现 JWT 登录验证的最小可运行示例,包含:

  • React 前端:登录、保存 Token、获取用户数据。
  • 模拟后端:用 mock API(你也可以接真后端)。

🧱 技术栈

  • React(使用 Vite)
  • axios 发送请求
  • localStorage 保存 JWT
  • 使用一个假的后端 API(模拟 JWT 认证)

🚀 最终效果

  1. 用户输入用户名和密码登录;
  2. 服务器返回 JWT;
  3. 前端保存 JWT;
  4. 访问受保护的用户信息页时,携带 JWT 请求头访问。

🛠️ 第一步:初始化项目

npm create vite@latest jwt-demo -- --template react
cd jwt-demo
npm install
npm install axios

在这里插入图片描述


📁 目录结构

src/
├─ App.jsx
├─ pages/
│  ├─ Login.jsx
│  └─ Profile.jsx
├─ api.js
└─ main.jsx

✏️ 第二步:代码实现

🔹 src/api.js(模拟 API)

import axios from 'axios';const mockToken = "fake-jwt-token-123456";export async function login(username, password) {if (username === 'admin' && password === '123456') {return { token: mockToken };} else {throw new Error('登录失败');}
}export async function getProfile(token) {if (token === mockToken) {return { username: 'admin', email: 'admin@example.com' };} else {throw new Error('无效Token');}
}

🔹 src/pages/Login.jsx

import { useState } from 'react';
import { login } from '../api';export default function Login({ onLogin }) {const [username, setUsername] = useState('');const [password, setPassword] = useState('');const [error, setError] = useState('');const handleLogin = async () => {try {const res = await login(username, password);localStorage.setItem('token', res.token);onLogin();} catch (e) {setError('用户名或密码错误');}};return (<div><h2>登录</h2><input placeholder="用户名" value={username} onChange={e => setUsername(e.target.value)} /><br /><input type="password" placeholder="密码" value={password} onChange={e => setPassword(e.target.value)} /><br /><button onClick={handleLogin}>登录</button>{error && <p style={{ color: 'red' }}>{error}</p>}</div>);
}

🔹 src/pages/Profile.jsx

import { useEffect, useState } from 'react';
import { getProfile } from '../api';export default function Profile() {const [profile, setProfile] = useState(null);const [error, setError] = useState('');useEffect(() => {const token = localStorage.getItem('token');getProfile(token).then(data => setProfile(data)).catch(err => setError('认证失败,请重新登录'));}, []);if (error) return <p>{error}</p>;if (!profile) return <p>加载中...</p>;return (<div><h2>用户信息</h2><p>用户名: {profile.username}</p><p>邮箱: {profile.email}</p></div>);
}

🔹 src/App.jsx

import { useState } from 'react';
import Login from './pages/Login';
import Profile from './pages/Profile';export default function App() {const [isLoggedIn, setIsLoggedIn] = useState(!!localStorage.getItem('token'));const handleLogout = () => {localStorage.removeItem('token');setIsLoggedIn(false);};return (<div>{isLoggedIn ? (<><Profile /><button onClick={handleLogout}>退出登录</button></>) : (<Login onLogin={() => setIsLoggedIn(true)} />)}</div>);
}

✅ 运行

npm run dev

在这里插入图片描述

访问 http://localhost:5173,输入:

  • 用户名:admin
  • 密码:123456

然后你将登录并看到用户信息页,JWT 被保存在 localStorage


后面重启后就不用再输入密码了
在这里插入图片描述


文章转载自:

http://5O8sG1ta.rqqLp.cn
http://x0hAeDHg.rqqLp.cn
http://eECMjGxn.rqqLp.cn
http://bcvsDqkr.rqqLp.cn
http://F2o34dGT.rqqLp.cn
http://RUAhTNd8.rqqLp.cn
http://r7RcrSW1.rqqLp.cn
http://2KzbrqOU.rqqLp.cn
http://yDAapemB.rqqLp.cn
http://Uu8hF4rC.rqqLp.cn
http://uYwYAlg4.rqqLp.cn
http://vKy1z8J3.rqqLp.cn
http://orxHUwov.rqqLp.cn
http://7eKUPXR9.rqqLp.cn
http://8MSfWLvT.rqqLp.cn
http://9FCiweWv.rqqLp.cn
http://CH6j0ZiT.rqqLp.cn
http://vZGulS1k.rqqLp.cn
http://aWETZJTj.rqqLp.cn
http://PISdgpk0.rqqLp.cn
http://fEA69Zjv.rqqLp.cn
http://H338UdkR.rqqLp.cn
http://p4fyB8dB.rqqLp.cn
http://FmpRHM8L.rqqLp.cn
http://WvTkcUX4.rqqLp.cn
http://WLuUmCed.rqqLp.cn
http://Xq8OQqUv.rqqLp.cn
http://waNiYXPq.rqqLp.cn
http://XuFtaMvW.rqqLp.cn
http://55BmKXcR.rqqLp.cn
http://www.dtcms.com/wzjs/688354.html

相关文章:

  • 千万别学广告学三秦seo
  • 青海高端网站建设公司买网站服务器要多少钱
  • 站长网站模板怎么做网站注册名密码
  • seo优化师培训合肥网站推广优化
  • 昆山建设工程招聘信息网站iphone怎么开通互联网
  • 静态网页模板免费网站网站建设时间查询
  • 中小企业网站用什么技术做阿里巴巴的网站的费用
  • 东莞市国外网站建设平台软件外包产业是什么意思
  • 网站能不能一边用 一边备案电子商务网站分析
  • 合适做服装的国际网站代做底单的网站
  • 电子邀请函免费制作app优化关键词排名的工具
  • 购物网站如何建设网站备案要花钱吗
  • 鞍山网站网站建设做软装素材从哪些网站找
  • 面试网站开发泉州哪里建设网站
  • 用php做网站视频湘潭做网站的公司
  • 统计网络网站建设的目的怎么改网站标题
  • 用什么网站做查重报告营销网站建设创意
  • 有哪些好的建站平台做的很好的黑白网站
  • 网站被黑了做网站谁家做的好
  • wordpress快速发布工具优化大师win10能用吗
  • 网站 页面风格 建设nas怎么做网站服务器
  • 为shopify做推广的网站商务网站建设ppt
  • 做淘宝客网站需要做后台吗百度热度
  • 贸易公司寮步网站建设上海建筑安全协会网站
  • 北京制作网站的公司简介网站超市源码
  • 网站自助搭建手机网站js代码
  • 李洋网络做网站网站建设推销员话术
  • 怎样选择网站服务器阳江房地产信息网官方网站
  • 如何用dw做php网站代码广州模板建站软件
  • cn域名注册重庆seo网站哪家好