前后端分离项目,后期前端身份验证的麻烦

news/2024/11/18 9:29:15/文章来源:https://www.cnblogs.com/ggtc/p/18348521

软件构成

  • 后端
    后端是一个asp.netcore webapi项目,使用jwt进行身份验证和鉴权。
  • 前端
    前端是一个基于http协议的asp.netcore RezorPage项目,但实际上完全使用的wwwwroot目录下的静态文件。没有使用RazorPage

目前只有后端接口鉴权,前端页面任意访问

身份验证需求

这两天安全要求下来了,要求给前端页面加上身份验证。只开放login登录页面redirect第三方系统跳转此系统页面。初始办法是后端登录生成token后,放到redis中。

  • login.html
    访问前端login登录页面,点击登录后,后端接口返回token,login页面将token放在本地cookie中。之后打开新页面时都会带上这个cookie。前端中间件中取出cookie中的token,和redis中的token比较。如果一致,则放行到下一个中间件。如果不一致,则重定向到login录页面,并短路请求处理管道。

image

  • redirect.html
    对于redirect第三方系统跳转此系统页面,则是在url中传入了一个token,前端项目验证token有效性之后放入到redis中。同时redirect页面也把这个token放入本地cookie。之后新标签页都会带上这个cookie。在前端项目的中间件中进行验证。

image

问题

对于在新标签页打开页面的形式,这种身份验证方式运行良好,没有任何问题。

但是使用cookie进行身份验证有一个问题。就是iframe框架限制了跨域的cookie提交。当redirect被嵌入其它系统时,首先,这个本地cookie被禁止写入。其次,cookie不会被放到请求中,因此一直往登录页面跳转。

我之后试了下会话cookie,也就是session。但是被查看响应信息,提示会话cookie同样被浏览器禁止写入。这下子就麻烦了,好多其它系统页面都使用了iframe嵌入这个项目的页面。如果加上前端身份验证的话,那些地方的iframe都会跳转到登录页面。

是否只有https才能在iframe中携带cookie,解决这个跨域问题?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/779692.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IgniteFAQ-2-CacheWriterException: Failed to write entries in database

ignite同步或者异步落库数据到DB时,如果因为落库的数据不满足db库的要求,如长度、精度、nonull等限制,就会出现落库失败报Failed to write entries in database错误。 ignite异步落库默认时5秒或者10240条flush一次,失败的数据会不断尝试,当存在一条数据以为数据库要求失败…

Leetcode: 586. Customer Placing the Largest Number of Orders

题目要求如下:给出的例子如下:简单地说就是要找出表中订单最多客户的ID。 使用如下的代码进行实现: import pandas as pddef largest_orders(orders: pd.DataFrame) -> pd.DataFrame:return orders.groupby("customer_number").count().reset_index().nlargest(1,…

攻防世界CTF web方向

入门题鉴赏 disabled_button https://adworld.xctf.org.cn/challenges/list 解决思路:因为说的是前端的button坏掉了,于是我们用查看器查看他的页面源代码,发现有个disabled,就是不能的意思将 disabled 删掉即可! 总结:前端JS代码查看修改weak_auth https://adworld.xctf…

前端使用 Konva 实现可视化设计器(20)- 性能优化、UI 美化

这一章主要分享一下使用 Konva 遇到的性能优化问题,并且介绍一下 UI 美化的思路,主要使用 Naive UI。这一章主要分享一下使用 Konva 遇到的性能优化问题,并且介绍一下 UI 美化的思路。至少有 2 位小伙伴积极反馈,发现本示例有明显的性能问题,一是内存溢出问题,二是卡顿的…

【日记】感觉自己越来越摆了(546 字)

正文今天想了很多乱七八糟的事情,但最后都没有什么结论。这种情况一般称为:内耗。擦药的地方有些好点了,又有一些新的地方冒了出来。参加工作一年多了,现在却才开始越发受不了这种生活。好想要什么时候参加一次正规的半程马拉松比赛。只要完赛就好了。两次旅行的行程依然没…

二叉树的递归套路

对于二叉树的经典递归套路的理解二叉树的递归套路 二叉树结构 二叉树是一个将数据组织成头尾相连的特殊链表,每一个数据单元与链表一样有一个指向其的指针,但与链表不同的是其可以有两个指向其他单元的指针,分别是其左孩子与右孩子。采用该这种结构,最终数据的呈现形式会与…

[rCore学习笔记 023]任务切换

导读 还是要先看官方手册. 学过DMA的同志可能比较好理解,一句话, 释放CPU总线 : 如果把应用程序执行的整个过程进行进一步分析,可以看到,当程序访问 I/O 外设或睡眠时,其实是不需要占用处理器的,于是我们可以把应用程序在不同时间段的执行过程分为两类,占用处理器执行有效…

鸿蒙(Harmony) NEXT - AlphabetIndexer实现联系人字母索引

鸿蒙(Harmony) NEXT 9月份就要正式上架了,并且不会再兼容安卓平台,于是我也赶紧给App开发鸿蒙版本,接下来会写一系列的Harmony开发教程。 今天使用AlphabetIndexer实现联系人字母索引,AlphabetIndexer是官方封装好的组件 咱们实现后的效果图:代码实现 首先在aboutToAppear…

window下redis的安装

下载地址:https://github.com/tporadowski/redis/releases Windows下的.msi安装和.zip格式区别:.msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序。说白了.msi就是Windows installer的数据包,把所有和安装文件相关的内容封装在一…

最全vue面试题,vue知识点

1、MVC 和 MVVM 区别 MVC MVC全名是 Model View Controller,时模型 - 视图 - 控制器的缩写,一种软件设计典范。Model(模型):是用于处理应用程序数据逻辑部分。通常模型对象负责在数据库中存取数据。 View(视图):是应用程序中处理数据显示的本分。通常视图是依据模型数据创建…

生猪

近期将迎来回调

使用xshell连接阿里云远程服务器(图文教程)

1. 参考资料:阿里云官方帮助资料: https://help.aliyun.com/document_detail/71529.html?spm=a2c4g.11186623.6.616.JqUSgl2. 准备条件:1). 登录阿里云官网,申请阿里云ECS服务器请参考网上其他教程,或者自己申请一下就好。2). 下载Xshell客户端推荐Xshell软件链接:http:…