方法CreateJwtPayload()在JwtAuthProvider.cs (https://github.com/ServiceStack/ServiceStack/blob/45108614b77c37185e3fe471ad49a462b825354c/ServiceStack/src/ServiceStack/Auth/JwtAuthProvider.cs#L361)是用户名与"@"符号未设置为有效载荷"preferred_username"
代码片段:
if (!string.IsNullOrEmpty(session.UserName))
jwtPayload["preferred_username"] = session.UserName;
else if (!string.IsNullOrEmpty(session.UserAuthName) && !session.UserAuthName.Contains("@"))
jwtPayload["preferred_username"] = session.UserAuthName;
系统中的用户名可能包含"@"符号,并且现在没有添加有效负载"preferred_username"
为什么UserAuthName "@"没有添加到这个JswAuthProvider of ServiceStack的有效载荷?
带有@
的Usernames是用来确定ServiceStack中的Username是否为电子邮件的。
您可以使用CreatePayloadFilter
来修改JWT有效负载以自己填充它。