zoukankan      html  css  js  c++  java
  • 关于IdentityServer4不使用MVC页面进行登录(跨域发送验证请求)的一些问题(前后端分离的验证)

    前言

    最近刚把个人博客的主要功能模块写完了,想把IdentityServer4引入,准备基于IdentityServer4+EF+Identity来实现一套前后端分离的身份验证授权的管理系统(即使用Vue写登陆页面以及IdentityServer4的相关资源管理页面,然后后端提供IdentityServer4的Api接口进行供前端调用来进行登录和管理)。

    登陆

    在我将登陆页面和API接口都搞定了之后,我准备测试一下,能否通过发请求的方式实现身份认证。
    1、将IdentityServer4的登陆地址修改为Vue项目的地址

    2、Vue的默认路由组件

    以上两步做完之后,启动Vue,启动后按我所想的跳转到了我的登录页面

    然后输入用户名密码进行登录。正确的命中了我打得断点,执行完之后却出了问题,并没有按我所想的,跳转到我给的重定向地址,而是卡在了callback请求中(验证请求后,会跳转到identityServer4的AuthorizeCallbackEndpoint端点去根据授权模式来判断是返回Code还是直接重定向到客户端的地址)

    控制台中确实请求了这个地址,但会一直得不到响应,最终超时,为了弄清楚这个问题花了我两天的时间,还下载了IdentityServer4的源码来一步一步的调试,最终发现在调用了Redirect()方法后,.netCore并没有接收到callback请求,虽然调试界面显示发送了这个请求,但并没有进入.netCore的管道中,想了一下,应该是跨域的问题,尽管我设置了允许任何跨域请求,还是不行。
    然后我准备返回地址然后在页面直接请求callback的地址,,结果显示没有登录,又给我重定向到登录页面了。。。
    尽管我这里
    已经成功了,但并没有在httpcontext中通过验证,应该是管道返回的时候IdentityServer4内部设置的吧。
    最后为了验证是否是跨域的问题,我将两个项目部署到了同一个端口下面。最终成功通过了验证。

    不知道有哪位大佬知道如何跨域实现登录呢,恳请指点一番-

  • 相关阅读:
    Spring源码:Spring IoC容器加载过程(1)
    Spring源码:Spring IoC容器加载过程(2)
    logback日志异步打印
    Spring Boot学到的内容
    JavaScript——数组的indexOf()方法在IE8中的兼容性问题
    聊聊字符串拼接的哪一些事儿
    C# LINQ学习笔记五:LINQ to XML
    聊聊多线程那一些事儿(task)之 三 异步取消和异步方法
    C# 中的IComparable和IComparer
    .net core 简单定时程序
  • 原文地址:https://www.cnblogs.com/qwfy-y/p/13234341.html
Copyright © 2011-2022 走看看