如何使用令牌获取有关用户的信息

本文关键字:用户 信息 何使用 令牌 获取 | 更新日期: 2023-09-27 18:06:44

需要使用令牌接收用户数据。你好。需要使用令牌接收用户数据。我有一个web api + websockets, websockets连接通过web浏览器。

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;
           }
     }

我使用Identity,这是一种带有令牌的变体,当您第一次从客户端收到适合我的数据时。告诉我你如何在不需要登录和密码的情况下获得用户输入,并使用[授权]。

对不起,我的英语不好。

如何使用令牌获取有关用户的信息

我决定了我的任务!下面是代码:

  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();