繁体   English   中英

如何使用REST Service-wcf WebHttpBindig对用户进行身份验证?

[英]how to authenticate user with rest service-wcf WebHttpBindig?

我有一个用C#编写的服务器-客户端项目。 我想将客户端更改为Web客户端,以便我们可以使用浏览器将其打开。 因此,我决定制作一个WCF Rest服务,以取代服务器端。 我用于该服务的绑定是webHttpBinding。 我的问题是服务的行为。 每次调用后都会初始化服务数据(变量等)。 如果我添加[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] ,则不会更改任何内容。 如果我使用[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] ,它可以工作,但我想每个客户端的服务实例都相同。

我有一个简单的HTML网页,该网页从客户端获取用户名和密码并将其发布到服务中。 该服务将使用用户数据库和响应检查登录信息。 我的问题是我无法将用户状态保存为已登录状态,因为在每种发布/获取方法之后,服务都会重置。

我该怎么办?

当试图通过HTTP维护会话时,这是一个非常标准的问题,这就是webHttpBinding所使用的。 即使您试图强迫它进行会话,也不会。 RESTful服务无法正常工作。

您需要做的高级概述是让服务创建一个令牌,该令牌在初始身份验证时将其提供给客户端(可能存储在cookie中),然后客户端将在每次请求时将其发送回去。 然后,服务可以使用该令牌检查客户端是否在每个请求中都登录到特定帐户。 您可能希望使令牌在一定时间(可能是1个月,1周,1天,10分钟,具体取决于您的应用程序)之后过期。

您可以在此处找到更多信息:

RESTful身份验证

SPA认证和会话管理最佳实践

传统Web应用程序和API中的身份验证,授权和会话管理

暂无
暂无

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

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