繁体   English   中英

基于令牌的授权Web API

[英]Token Based Authorization Web API

我正在使用骨干.js和网络api构建应用程序。 JS客户端将发送ajax请求以访问api。 构建API非常简单,但是我想实现API的身份验证和授权。

我计划在成功通过身份验证后返回令牌,并将该令牌用于进一步的请求。 该令牌将在HTTP授权标头中传递。 我的要求如下:1)在每个请求上验证令牌并获取用户ID。 2)使用获取的用户ID进行进一步的操作。

可以使用“自定义操作”过滤器处理第一位,其中可以针对数据库验证永久令牌。 但是我找不到第二个样本或示例。 我想从传递的令牌中获取一个用户ID,并将其进一步携带以供以后处理。 有什么办法吗?

等待建议或想法。 任何代码示例都将真正有帮助。 提前致谢。

您可以在成功验证令牌后设置Thread.CurrentPrincipal ,如下所示:

IPrincipal principal = new GenericPrincipal(new GenericIdentity(username), null);

Thread.CurrentPrincipal = principal;
// if we're running in IIS...
if ( HttpContext.Current != null )
    HttpContext.Current.User = principal;

主体也可以是实现System.Security.Principal.IPrincipal接口的自定义类的实例(以便能够关联其用户ID)。

我还建议您使用DelegatingHandler代替操作过滤器来进行令牌验证,以便在消息生命周期中尽早设置当前主体。 此外,通过这种方式,您不必用动作过滤器属性来装饰每个动作方法/控制器。

我强烈建议使用OAuth。 无论如何,您可以在会话中设置令牌和用户信息,并在后续调用中使用它们。 即,如果会话处于活动状态并且存在用户信息,则使用它们(否则可能通过OAuth)对用户进行授权和身份验证,如果有效,则将其存储在会话中以在后续调用中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM