React实现登录授权功能

一、概述

        本文将通过React实现项目登录授权功能。

二、技术实现

useAuth.js

import {useEffect, useState} from "react";

const LOCALSTORAGE_USER = "LOCALSTORAGE_USER";
export const useAuth = () => {

  /**
   * 认证用户状态
   */
  const [user, setUser] = useState(null);

  /**
   * 登录函数
   */
  const login = async (username, password) => {
    const res = await authService.auth(username, password);
    setUser(res.data);
    window.localStorage.setItem(LOCALSTORAGE_USER, JSON.stringify(res.data))
  }

  /**
   * 登出函数
   */
  const logout = (username) => {
    setUser(null)
    window.localStorage.removeItem(LOCALSTORAGE_USER)
  }

  /**
   * 初始化加载
   */
  useEffect(
    () => {
      setUser(JSON.parse(window.localStorage.getItem(LOCALSTORAGE_USER)));
    }
    , []
  );
  
  return {user, login, logout}
}

app.js

import React from 'react';
import useAuth from './useAuth';

function App() {
  const { user, login, logout } = useAuth();

  return (
    <div>
      {user ? (
        <div>
          <p>Welcome, {user.name}!</p>
          <button onClick={logout}>Logout</button>
        </div>
      ) : (
        <div>
          <p>Please login</p>
          <button onClick={login}>Login</button>
        </div>
      )}
    </div>
  );
}

export default App;

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值