我需要开发一个iPhone客户端,它可以从某个地方使用JSON数据。我选择了MS的Web API,因为它看起来很容易,但当涉及到用户身份验证时,事情变得相当令人沮丧。
我很惊讶,在谷歌上搜索了几个小时后,我竟然找不到一个清晰的示例,说明如何从登录屏幕到在我的ApiController
方法上使用Authorize
属性来验证用户。
这不是一个问题,而是要求提供一个如何准确做到这一点的例子。我已经看了以下几页:
尽管这些说明了如何处理未授权请求,但它们并没有清楚地演示LoginController
之类的请求用户凭据并验证它们的方法。
有人愿意写一个简单的例子或者给我指出正确的方向吗?
3条答案
按热度按时间dw1jzc5e1#
我很惊讶,在谷歌上搜索了几个小时后,我竟然找不到一个清晰的例子,说明如何从登录屏幕到使用ApiController方法上的Authorize属性来验证用户。
这是因为你对这两个概念感到困惑:
MVC中的
Authorize
属性用于应用访问规则,例如:上述规则仅允许用户(具有 Admin 和 Super User 角色)访问方法
也可以在web.config文件中使用
location
元素设置这些规则。但是,在执行这些授权规则之前,您必须通过当前网站的身份验证。
尽管这些说明了如何处理未经授权的请求,但它们并没有清楚地演示类似LoginController或类似的东西来请求用户凭据并验证它们。
从这里,我们可以将问题一分为二:
这是最简单的方法,因为您将依赖于Authentication in ASP.Net
这是一个简单的例子:
Web配置
用户将被重定向到 account/login 路径,在那里您将呈现自定义控件以询问用户凭据,然后您将使用以下命令设置身份验证cookie:
当您**仅在Web应用程序中公开Web API服务时,就会出现这种情况。**因此,您将有另一个客户端使用这些服务,该客户端可以是另一个Web应用程序或任何.Net应用程序(Win Forms、WPF、控制台、Windows服务等)
例如,假设您将使用同一网络域(内部网内)上的另一个Web应用程序的Web API服务,在这种情况下,您可以依赖ASP.NET提供的Windows身份验证。
如果您的服务在Internet上公开,则需要将经过身份验证的令牌传递给每个Web API服务。
欲了解更多信息,请访问以下文章:
brgchamk2#
如果你想验证用户名和密码和而不使用授权cookie,MVC4 Authorize属性将无法正常工作。但是,你可以将以下帮助器方法添加到你的控制器以接受基本的验证头。从你的控制器方法的开头调用它。
从客户端,这个helper创建一个
HttpClient
,其中包含验证头:kq0g1dla3#
我正在处理一个MVC 5/Web API项目,需要能够获得Web API方法的授权。当我的索引视图第一次加载时,我调用了“token”Web API方法,我认为该方法是自动创建的。
用于获取令牌的客户端代码(CoffeeScript)为:
如果成功,则调用以下命令,将身份验证令牌保存在本地:
然后,如果我需要对具有[Authorize]标记的Web API方法进行 AJAX 调用,我只需在Ajax调用中添加以下头: