Jwt

自定义JwtAuth在linux环境不能用

发布于 2020-05-05 22:12:29

业务是这样:我有一个自定义用户表,然后框架用户表只用来后台管理登录,自定义用户表用来jwt接口登录,代码如下:

var _info = new LoginUserInfo ();
_info.Id = Guid.Parse ($"{-1:X32}");
_info.ITCode = $"WX_GUEST";
_info.Name = $"@WX_GUEST";
_info.Memo = (-_bind_id).ToString ();
LoginUserInfo = _info;
//_ts = HttpContext.RequestServices.GetService (typeof (ITokenService)) as ITokenService;
var token = await _ts.IssueTokenAsync (_info);
return ApiReturns.Success (new { need_phone_login = true, token });

然后这个代码生成的jwt bearer用来调用[AllRights]接口,测试环境能用,发布到本地windows能用,发布到远程linux环境就不能用,返回401 Error: Unauthorized,内容是

Bearer

然后使用WalkingTec.Mvvm.Mvc.Admin的接口,签发的jwt bearer能正常调用[AllRights]接口

问题比较诡异,然后我对比了一下两者签发的jwt,payload格式完全一样,所以问题大概出在鉴权阶段

查看更多

关注者
0
被浏览
503
刘亮
刘亮 2020-05-06
专业编码30年

应该解决了吧

2 个回答
fafafa1
fafafa1 2020-05-06

问题原因是我自己用public new LoginUserInfo LoginUserInfo做自定义鉴权没有被调用到,然后刘总加了个接口,通过重载protected override LoginUserInfo GetLoginUserInfo (Guid userId)实现自定义鉴权,从而修复这问题

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览