如何使用令牌获取有关用户的信息
Posted
技术标签:
【中文标题】如何使用令牌获取有关用户的信息【英文标题】:How can I get information about the user using a token 【发布时间】:2016-09-12 16:20:22 【问题描述】:需要使用令牌接收用户数据。你好。需要使用令牌接收用户数据。我有一个 web api + websockets,通过 web 浏览器连接 websockets。
var webSocket = new WebSocket(handlerUrl);
//Open connection handler.
webSocket.onopen = function ()
webSocket.send("\"type\":\"LOGIN\",\"access_token\":\"Bearer HIDDEN\"");
;
一旦连接,我立即发送令牌。 在服务器端,它看起来如下:
public class SocketClientController: ApiController
public HttpResponseMessage Get ()
HttpContext.Current.AcceptWebSocketRequest (new WebSocketHandler ());
return Request.CreateResponse (HttpStatusCode.SwitchingProtocols);
<miss>
套接字类:
<miss>
private void Login(string access_token)
// here i want get user info
public override void OnMessage(string input)
dynamic data = JObject.Parse(input);
switch ((string)data.type)
case "LOGIN":
Login((string)data.access_token);
break;
我使用身份,当您第一次从客户端收到适合我的数据时,带有令牌的变体。告诉我如何在不通过登录名和密码的情况下获取用户输入,并使用 [Authorize]。
对不起我的英语。
【问题讨论】:
令牌保存在哪里?您必须保存令牌(如会话数据)以验证您从用户(登录)获得的令牌 @rbr94 感谢您的回答!不是很明白,在Session中维护一个token是不是问题,因为有可能只获取一个token的用户名? 你的意思是把用户名和令牌结合起来,即它们之间有某种联系? 【参考方案1】:我决定了我的任务!下面是代码:
public class MachineKeyProtector : Microsoft.Owin.Security.DataProtection.IDataProtector
private readonly string[] _purpose =
typeof(OAuthAuthorizationServerMiddleware).Namespace,
"Access_Token",
"v1"
;
public byte[] Protect(byte[] userData)
throw new NotImplementedException();
public byte[] Unprotect(byte[] protectedData)
return System.Web.Security.MachineKey.Unprotect(protectedData, _purpose);
用途:
var secureDataFormat = new TicketDataFormat(new Providers.MachineKeyProtector());
AuthenticationTicket ticket = secureDataFormat.Unprotect(access_token);
var userId = ticket.Identity.GetUserId();
【讨论】:
以上是关于如何使用令牌获取有关用户的信息的主要内容,如果未能解决你的问题,请参考以下文章
python 有关如何将Flask与requests-oauthlib一起使用以使用OAuth 2令牌获取GitHub用户配置文件的示例。
python 有关如何将Flask与requests-oauthlib一起使用以使用OAuth 2令牌获取GitHub用户配置文件的示例。