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

做网站合肥哪家公司好/搜索引擎优化文献

做网站合肥哪家公司好,搜索引擎优化文献,汉阳网站建设,wordpress中文文档下载在上一章节中,我们已经成功创建并登陆了系统,现在需要为系统添加权限和登录认证,以提高系统的安全性、数据保护、个性化服务和用户体验。此外,添加权限和登录认证还可以方便管理员进行用户和授权管理。为了快速开发前端&#xff0…

在上一章节中,我们已经成功创建并登陆了系统,现在需要为系统添加权限和登录认证,以提高系统的安全性、数据保护、个性化服务和用户体验。此外,添加权限和登录认证还可以方便管理员进行用户和授权管理。为了快速开发前端,建议使用Strapi来实现数据库构建、管理数据、简化开发。在本章节中,将会讨论如何添加权限和登录认证,并展示如何使用Strapi来简化这个过程。

一、关于Strapi

Strapi是一个开源的Node.js内容管理框架,它提供了一个可扩展的管理界面和API,使得开发者可以更加轻松地构建和管理自己的应用程序。对于前端开发者来说,使用Strapi的好处主要有以下几个:

  1. 简化后端开发:Strapi可以帮助前端开发者快速构建自己的后端API,这样就不必从头开始构建自己的后端应用程序,从而节省时间和精力。
  2. 管理数据:Strapi提供了一个可扩展的管理界面,可以方便地管理应用程序中的数据,例如添加、编辑、删除数据等。这对于前端开发者来说非常方便,可以让他们专注于前端开发,而不必担心后端管理。
  3. 与前端框架集成:Strapi支持与各种前端框架(例如React、Vue.js等)的集成,这使得前端开发者可以更加方便地使用Strapi构建自己的应用程序。

二、安装Strapi并启动

先使用 strapi 官网提供的脚手架初始化一个后端应用,注意此项目创建后默认新建的是SQLite数据库。

npx create-strapi-app@latest strapiBackend --quickstart


启动后浏览器会打开默认Strapi Admin页面并进入开发模式http://localhost:1337/admin/,在此页面创建一个管理员账户(可以随便起,但是一定要记住账密),为本项目的第一个管理用户。此后会登入管理页面。

注意: 如果服务没有自动启动,可以进入项目路径下 cd starpiBackend 运行以下命令 :npm run develop/ npm run start 。

对于Strapi,npm run develop和 npm run start这两个命令的区别如下:

  1. npm run develop:使用此命令启动Strapi应用程序时,它将在开发模式下运行。这意味着Strapi会自动重新加载应用程序代码以反映更改,并在终端输出日志信息,以便开发人员可以及时调试应用程序。此命令还将启动本地数据库,并将在控制台输出有关服务器和数据库的信息。该命令适用于在开发环境中使用Strapi。
  2. npm run start:使用此命令启动Strapi应用程序时,它将在生产模式下运行。这意味着Strapi会使用预编译的代码,并且不会自动重新加载应用程序代码。此命令还将使用配置文件中指定的数据库启动应用程序,并且不会在控制台输出过多的日志信息。该命令适用于在生产环境中使用Strapi。

登陆后的strapi主界面如下:

  1. 导航栏: 在Strapi主界面的顶部,有一个导航栏,其中包含了链接到主要功能区域的菜单,如Content-Types、Plugins、Settings等。导航栏还包括其他工具,例如文档、支持和用户资料。
  2. 仪表板: 在Strapi主界面中间,有一个仪表板,其中包含有关当前应用程序的一些信息和统计数据,例如数据库连接状态、API请求次数、文件存储使用情况等。
  3. Content-Types: Content-Types是Strapi应用程序的主要功能之一,它允许开发人员定义和管理应用程序中的数据结构,例如博客文章、用户信息等。在Content-Types模块中,开发人员可以创建、编辑、删除Content-Types,并定义Content-Types的属性和关系。
  4. Plugins: Strapi允许开发人员使用插件来扩展应用程序的功能。在Plugins模块中,开发人员可以查看已安装的插件列表、安装新插件、配置插件等。
  5. Settings: 在Settings模块中,开发人员可以配置应用程序的各种设置,例如电子邮件、安全、服务器、文本编辑器等。
  6. 用户资料: 在用户资料模块中,用户可以查看和编辑自己的资料信息,例如名称、电子邮件地址等。

三、配置数据结构(建表)

创建Content-type(数据表结构):Content-type用来创建数据结构,当创建一个新的项目,第一步就是建立数据结构。 注意: Content-type等同于数据库中的表,上述操作等同于在数据库内创建了一张包含username、email等各种字段的表。

3.1 User表

对于我们前端项目第一步需要实现登陆,即需要一个User的内容类型。启动Strapi内置一个User类型, 其中包含username、email等几个常用的字段,根据项目需要,可以增加字段如dept、dept_name、full_name等。具体操作步骤如下图所示。

3.2 建表

假如需要实现一个微博系统,那么最起码需要实现用户表、信息Message表、主题Topic表、图片Image表,且不同的表之间存在对应关系,一对多或多对一。

  • 一个用户可以发送多条信息:一对多
  • 一个话题下也可以有多条信息:一对多
  • 一条信息可以上传多张图片:一对多

如下图所示,创建好对应的Topic表及内部的字段topicId、title、desc等。同理创建好Message表

3.3 建立表关联

建立完 Message 表后,需要与 User 建立关系多对一对关联。

重复上述步骤可以建完所有表了,其中 Images 表和User表是不要建立的,因为用户和附件上传是通用功能,strapi 系统帮我们内置了,极大地加快了开发效率。

3.5 创建实体entry

创建实体entry 可以理解为往对应的表内插入数据。如下图所示,向message表内插入一条记录

插入数据后记得点击publish 发布出去,等同于将这个操作commit提交。

3.6 接口添加权限

数据准备好后,需要给其添加权限,否则数据暴露在接口外,容易引起安全问题。那么如何添加权限? Strapi的权限是通过给用户User分配角色Role,Role角色被赋予权限来实现的。

  • 创建两个Role,并给对应的表赋予CRUD增删改查的权限。

  • 其次创建两个User,并给用户赋权

  • 将Message赋予User

四、Postman模拟登陆及查询及校验权限操作

至此,基本的数据和角色权限已经建立,用户Strapi User 有两篇ID为1和2 的Message消息,且Strapi User被赋权canRead,可以对Message表进行读取操作。下面以postman模拟登陆并实现权限校验。

  • postman模拟登陆
// 模拟登陆
http://localhost:1337/api/auth/local// 传入identifier和password ,其中identifier为email或者username
{"identifier": "Strapi User","password":"xxxx"
}//取出结果如下,注意取得的jwt需要保存,后续接口权限调用需要
{"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjc4MTk4MTY2LCJleHAiOjE2ODA3OTAxNjZ9.wO4w-CX3-mqp37MM4ugLzqFenifle2W9VbQ_3_Qu6mA","user": {"id": 1,"username": "Strapi User","email": "user@strapi.io","provider": "local","confirmed": true,"blocked": false,"createdAt": "2023-03-07T08:56:19.031Z","updatedAt": "2023-03-07T14:09:07.415Z","access": null,"full_name": null,"uni_id": null}
}

  • Strapi User查询数据
// 查询接口
http://localhost:1337/api/messages// 注意查询的API有鉴权,需要传入Authorization,具体值为 Bearer + 上面保存的jwt
Authorization : 'Bearer ' + jwt//取出结果如下图

  • Strapi User No 登陆

  • Strapi User No 查询

此时可以看到,未被赋权的Strapi User No 请求是被拒绝的。及权限校验成功。

五、总结

本文介绍了如何使用 strapi 来构建一个简单的权限校验系统。通过介绍建表、插入数据、增加用户、授权和校验等方面的内容,读者可以了解到 strapi 在实现权限校验方面的优势和应用场景。不同于传统的后端开发,strapi 提供了一种更加灵活、快速的后台配置方式,使得创建 API 接口变得十分容易。本系列文章点后续会在实际项目中应用 strapi ,结合企业级项目常用的技术栈 react、antdpro 和 typescript,可供读者参考。相信通过本文的介绍,读者已经对 strapi 有了一定的了解。

相关文章:

react+antdpro+ts实现企业级项目二:Strapi及认证登陆模块

在上一章节中,我们已经成功创建并登陆了系统,现在需要为系统添加权限和登录认证,以提高系统的安全性、数据保护、个性化服务和用户体验。此外,添加权限和登录认证还可以方便管理员进行用户和授权管理。为了快速开发前端&#xff0…...

Android ANR trace日志如何导出

什么是ANR ?上网搜索,一搜一大片,我就说个很容易识别的字眼,XXXAPP无响应 ANR trace日志如何导出?使用ADB命令: adb pull data/anr/trace.txt 你要存放的路径。查看ANR报错位置全局搜索你APP的包名&#x…...

Windows SSH 配置和SCP的使用

使用用户界面安装 ssh 功能 要在 Windows 10/11 上启用 SSH 服务器,请按照以下步骤操作: 按“Windows 键 I”打开“设置”菜单,然后选择“应用程序”。在左侧菜单栏中选择“应用和功能”。从列表中选择“可选功能”。 点击“添加功能”按钮…...

liunx 安装redsi和连接

liunx 安装redsi和连接 下载 (https://download.redis.io/releases/) 上传到 /usr/local目录 解压 tar -xvf redis-5.0.14.tar.gz 切换到 cd ./redis-5.0.14 编译 make 安装 make install 默认安装目录 /usr/local/bin/ 修改 ./redis-5.0.14/reds…...

接口里面可以写实现方法吗【可以】 、接口可以多继承吗【可以】

比如下面这道题: 问: 接口里面可以写方法吗? 答: 当然可以啊,默认就是抽象方法。 . 问: 那接口里面可以写实现方法吗? 答: 不可以,所有方法必须是抽象的。 . 问: 你确定吗&#xff1…...

【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.57】引入可形变卷积

文章目录前言一、解决问题二、基本原理三、​添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列…...

统计学习--三种常见的相关系数

1)Pearson积差相关系数:用于量度两个变量X和Y之间的线性相关。它具有1和-1之间的值,其中1是总正线性相关性,0是非线性相关性,并且-1是总负线性相关性。Pearson相关系数的一个关键数学特性是它在两个变量的位置和尺度的…...

基于Django4.1.4的入门学习记录

基于Django4.1.4的入门学习记录Django创建Django项目创建工程工程目录说明运行开发服务器settings.py配置文件应用的创建创建应用模块应用模块文件说明App应用配置注册安装子应用数据模型ORM概述定义模型类生成数据库表查看数据库文件Admin管理工具管理界面本地化创建管理员注册…...

C++ Butterworth N阶滤波器设计

介绍一个 Butterworth Nth 滤波器设计系数的函数,像 Matlab 函数一样的: [bl,al]butter(but_order,Ws); 和 [bh,ah]butter(but_order,2*bandwidth(1)/fs,high);rtfilter 在 Ububtu 中,容易找到: $ aptitude search ~dbutterwo…...

UXP下不用任何框架创建自己的插件并试运行

在上一篇文章中《Windows下vue框架下的UXP插件开发环境搭建及程序试运行》,搭建的是利用vue框架进行开发的UXP开发环境,而且是把官方的案例插件直接添加进UDT,下面要说的是不利用任何js的框架创建和试运行自己的UXP插件程序,这样来…...

mac修改国内源快速安装brew

我是参考了清华源官网,有任何困惑直接访问该网址即可。这里给出精简版。 1. 更改镜像到~/.zshrc 终端添加方式 echo export HOMEBREW_API_DOMAIN"https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api" >> ~/.zshrcecho export HOMEBREW_…...

Me-and-My-Girlfriend-1靶场通关

Me-and-My-Girlfriend-1靶场通关 靶机ip:192.168.112.135 信息收集 端口:22、80 还是从80WEB服务器端口入手 对服务器目录进行扫描,扫出以下目录 访问80端口WEB服务,显示一段文字只允许本地用户访问。 一眼伪造ip,查看页面…...

2.6 棋盘覆盖

在一个2*x2‘个方格组成的棋盘中,若怡有一个方格与其他方格不同,则称该方格为特殊方格,且称该棋盘为一特殊棋盘。显然,特殊方格在棋盘上出现的位置有 4种情形因而对任何k0,有4‘种特殊棋盘。图2-4 申的特殊棋益是12时 …...

JMU软件20 大数据技术复习(只写了对比18提纲的变动部分)

原博主 博客主页:https://xiaojujiang.blog.csdn.net/ 原博客链接:https://blog.csdn.net/qq_43058685/article/details/117883940 本复习提纲只适用于JMU软件工程大数据课程(ckm授课) 具体内容参考老师提纲的考纲,18和…...

MySQL底层存储B-Tree和B+Tree原理分析

1.B-Tree的原理分析 (1)什么是B-Tree B-树,全称是 Balanced Tree,是一种多路平衡查找树。 一个节点包括多个key (数量看业务),具有M阶的B树,每个节点最多有M-1个Key。 节点的key元素个数就是指这个节点能…...

基于Vue+Vue-cli+webpack搭建渐进式高可维护性前端实战项目

本文是专栏《手把手带你做一套毕业设计毕业设计》的实战第一篇,将从Vue脚手架安装开始,逐步带你搭建起一套管理系统所需的架构。当然,在默认安装完成之后,会对文件目录进行初步的细化拆分,以便后续功能迭代和维护所用。…...

第十三章:Java反射机制

第十三章:Java反射机制 13.1:Java反射机制概述 Java Reflection ​ Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 ​ 加…...

iLok USB不识别怎么办?

我的iLok USB坏了吗? 我的iLok USB没有被系统或软件识别。 如果您的iLok USB未被识别,问题可能出在iLok USB、iLok软件或受保护的软件。 提示如果您使用USB集线器,请确保您使用正确的集线器电源适配器。排除硬件:将iLok USB直接插…...

【LeetCode与《代码随想录》】二叉树篇:做题笔记与总结-JavaScript版

文章目录代码随想录144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历102.二叉树的层序遍历226.翻转二叉树101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数110.平衡二叉树257. 二叉树的所有路径404.左叶子之和513.找树左下角…...

机器人运动|浅谈Time Elastic Band算法

前言在自主移动机器人路径规划的学习与开发过程中,我接触到Time Elastic Band算法,并将该算法应用于实际机器人,用于机器人的局部路径规划。在此期间,我也阅读了部分论文、官方文档以及多位大佬的文章,在此对各位大佬的…...

【Linux】网络基础(1)

前言 相信没有网络就没有现在丰富的世界。本篇笔记记录我在Linux系统下学习网络基础部分知识,从关于网络的各种概念和关系开始讲起,逐步架构起对网络的认识,对网络编程相关的认知。 我的上一篇Linux文章呀~ 【Linux】网络套接字编程_柒海啦的…...

限流算法详解

限流是我们经常会碰到的东西,顾名思义就是限制流量。它能保证我们的系统不会被突然的流量打爆,保证系统的稳定运行。像我们生活中,地铁就会有很多护栏,弯弯绕绕的,这个就是一种限流。像我们抢茅台,肯定大部…...

Spark/Hive

Spark/HiveHive 原理Spark with HiveSparkSession Hive Metastorespark-sql CLI Hive MetastoreBeeline Spark Thrift ServerHive on SparkHive 擅长元数据管理Spark 擅长高效的分布式计算 Spark Hive 集成 : Hive on Spark : Hive 用 Spark 作为底层的计算引擎时Spark w…...

HashMap底层的实现原理(JDK8)

目录一、知识点回顾二、HashMap 的 put() 和 get() 的实现2.1 map.put(k, v) 实现原理2.2 map.get(k) 实现原理三、HashMap 的常见面试题3.1 为何随机增删、查询效率都很高?3.2 为什么放在 HashMap 集合 key 部分的元素需要重写 equals 方法?3.3 HashMap 的 key 为…...

操作系统-整理

进程 介绍 进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大&#…...

系统换行符的思考

各系统换行符 换行符,也即是回车换行,因为表示为Carriage-Return和Line-Feed。 回车用Return-Carrige表示,简写为CR,字符表示为\r。 换行用Line-Feed表示,简写为LF,字符表示为\n。 由于历史原因&#xf…...

Wwise集成到unreal

1、Wwise集成到Unreal 1.1 安装必要的软件 安装unreal 5.1;安装Audiokinetic Launcher;集成版本是Wwise 2021.1.12.7973。Audiokinetic Launcher下载地址: https://www.audiokinetic.com/zh/thank-you/launcher/windows/?refdownload&pl…...

前端秘籍之=>八股文经卷=>(原生Js篇)【持续更新中...】

大家好,最近想了想,打算总结归纳一版前端八股文经卷,给大家提供学习参考,如果帮助到大家,请大家,一键三连支持一下,你们的支持会激励我更加努力的更新更多有用的知识,博主先在这里谢…...

【Python安装配置教程】

Python由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台…...

Spring-Retry失败重试

文章目录 重试的场景引入依赖启动类serviceController@Retryable参数@Recover注意事项重试的场景 1、网络波动需要,导致请求失败,需要重发。 2、发送消息失败,需要重发,重发失败要记录日志 … 引入依赖 <!-- spring-retry--> <dependency><groupId>or…...