首页 > 其他分享 >React-crm的权限管理总结

React-crm的权限管理总结

时间:2023-03-03 22:33:43浏览次数:39  
标签:axios const res React error return import 权限 crm

引言

最近在写react-redux的后台管理系统,我觉得权限管理挺重要的,在此总结一下。

大致流程

  • 配置axios,解决代理以调用接口获取数据
  • 用户登陆调用接口,获取传入token以允许登陆,存储token
  • 在登陆时,收集用户信息(身份roles)存储以计算出权限
  • 路由分类(静态、动态)拿着用户身份和所有路由去计算出accessRoutes(可进路由)
  • 通过accessRoutes遍历出每一个route渲染到菜单栏中
  • 调整细节,路由定向,意外情况

解决代理

因为同源策略的原因,代理是们非常有必要的,否则会产生跨域问题。

安装axios

cnpm i [email protected] -S

image
具体代码如下

import axios from 'axios'
import {
    message,
    Modal
} from 'antd'
import {
    ExclamationCircleOutlined
} from '@ant-design/icons'
import store from '@/store'
import {
    resetUser
} from '@/store/actions'
const {
    confirm
} = Modal

// 为了解决调接口遭遇同源策略的阻塞,这里“前端项目调用当前端口上的接口”
const baseURL = 'http://localhost:8080'
const version = '/api/react'

// 创建axios实例
const service = axios.create({
    baseURL: baseURL + version,
    timeout: 5000
})

// 添加请求拦截器
service.interceptors.request.use(
    config => {
        // 添加Token
        config.headers.Authorization = localStorage.getItem('token')
        return config
    },
    error => {
        console.log(error) // for debug
        return Promise.reject(error)
    }
)

// 添加响应拦截器
service.interceptors.response.use(
    response => {
        // 如果代码走到这里,HTTP状态码=200
        const res = response.data
        console.log('----响应拦截器', res)
        // 对业务状态码进行判断
        if (res.err !== 0) {
            // 如果业务状态码不等于0,表示业务失败,就把后端的反馈信息弹出来。
            message.error(res.msg || '入参有误')

            // 当Token过期或者Token是伪造的,要求重新登录。
            if (res.err === -1) {
                // 登录重新登录
                confirm({
                    title: '当前你的登录已失效',
                    icon: < ExclamationCircleOutlined / > ,
                    content: '请重新登录',
                    okText: '重新登录',
                    // 隐藏取消按钮,要求必须重新登录
                    cancelButtonProps: {
                        style: {
                            display: 'none'
                        }
                    },
                    onOk() {
                        store.dispatch(resetUser())
                    }
                })
            }
            return Promise.reject(new Error(res.message || 'Error'))
        } else {
            return res.data
        }
    },
    error => {
        console.log('err' + error)
        return Promise.reject(error)
    }
)

export default service

标签:axios,const,res,React,error,return,import,权限,crm
From: https://www.cnblogs.com/hccok/p/17177214.html

相关文章

  • HelloReact
    单页面中使用React在单页面中使用React需要引入三个js:React的核心库、依赖核心库、babel(编译JSX)<scriptcrossoriginsrc="https://unpkg.com/react@16/umd/react.dev......
  • 15 Djaong内置权限
    Djanog中的权限是通过auth组件来实现的,在Djanog默认注册的app中,auth就是了INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.co......
  • 译文:5个让人惊喜的React库
    译文:5个让人惊喜的React库欧巴菜菜web前端开发​关注  原文链接:https://dev.to/naubit/5-small-and-hidden-react-libraries-you-should-a......
  • 在CRM中如何阻止附件的扩展
    有些时候在CRM中不希望有某些类型的附件存在,比如js脚本、zip文件等通过以下方式可以阻止特定的附件扩展属性在CRM环境中使用1、首先导航到PowerPlatform管理中心,然后选......
  • PostgreSQL技术大讲堂 - Part 8:PG对象权限管理
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同......
  • react使用this.setState给数组中某个对象赋值
    先记录一下正确写法const{payTypeList}=this.state;lettemp=payTypeListdat.openFlag=type//这一句是必须的,不然状态无法更改temp.map((i......
  • React+ReactToolKit中,如何在组件外部访问Redux的store,Uncaught ReferenceError: Cann
    之前在项目开发中,遇到一个问题,需要在axios的二次封装文件中,进行拦截,需要使用到redux的dispath派发但是在axios封装的文件中,直接引入store,出现了如下报错:UncaughtReferen......
  • linux用户权限与组
    less /etc/passwd查看用户文件   passwdtom[用户名]  修改密码 useraddsuguihua[用户名] 新增用户名vim /etc/passwd  将xiaoqiang的x删除之......
  • 完整手写React第二天
    2.实现jsxReact项目结构:react(宿主环境无关的公用方法)react-reconciler(协调器的实现,宿主环境无关)各种宿主环境的包shared(公用辅助方法,宿主环境无关)JSX转换是什么i......
  • Win10右键菜单添加“获取文件管理员权限”选项
    删除移动文件时:文件访问被拒绝,你需要Administrator提供的权限才能对此文件进行更改/文件访问被拒绝,你需要权限才能执行此操作/你需要提供管理员权限才能移动此文件右键添......