ApeLife技术 2020-07-04
最近刚把个人博客的主要功能模块写完了,想把IdentityServer4引入,准备基于IdentityServer4+EF+Identity来实现一套前后端分离的身份验证授权的管理系统(即使用Vue写登陆页面以及IdentityServer4的相关资源管理页面,然后后端提供IdentityServer4的Api接口进行供前端调用来进行登录和管理)。
在我将登陆页面和API接口都搞定了之后,我准备测试一下,能否通过发请求的方式实现身份认证。
1、将IdentityServer4的登陆地址修改为Vue项目的地址
2、Vue的默认路由组件
以上两步做完之后,启动Vue,启动后按我所想的跳转到了我的登录页面
然后输入用户名密码进行登录。正确的命中了我打得断点,执行完之后却出了问题,并没有按我所想的,跳转到我给的重定向地址,而是卡在了callcomeback请求中(授权请求后,会跳转到identityServer4的AuthorizeCallbackEndpoint端点去根据授权模式来判断是返回Code还是直接重定向到客户端的地址)
控制台中确实请求了这个地址,但会一直得不到响应,最终超时,为了弄清楚这个问题花了我两天的时间,还下载了IdentityServer4的源码来一步一步的调试,最终发现在调用了Redirect()方法后,.netCore并没有接收到callback请求,虽然调试界面显示发送了这个请求,但并没有进入.netCore的管道中,即使我将重定向的地址改为baidu
依然没有跳转过去,就算是
也没有跳转。想了一下,应该是跨域的问题,尽管我设置了允许任何跨域请求,还是不行,最后为了验证是否是跨域的问题,我将两个项目部署到了同一个端口下面。最终成功实现了授权。
最后还是没想明白为什么Redirect()后没有正确的跳转。
不知道有哪位大佬愿意为我解惑-。