Asp.net mvc 将MVC应用程序扩展到REST
我想我可能把这个问题的措辞弄错了。我目前拥有的是一个MVC Web应用程序(默认情况下)使用承载令牌。这一切都很好,但如果我想在Web应用程序之外与这些API中的任何一个进行通信,我希望使用REST客户端。但是,我找不到一种方法来生成一个承载令牌/调用Login方法并获取一个承载令牌,以便在后续请求中用作授权头 我希望的是: 发布/帐户/登录 返回:令牌 发布/产品/创建 令牌头 身体要求 回报:成功还是失败 所有这些都不会丢失网站的现有功能Asp.net mvc 将MVC应用程序扩展到REST,asp.net-mvc,rest,Asp.net Mvc,Rest,我想我可能把这个问题的措辞弄错了。我目前拥有的是一个MVC Web应用程序(默认情况下)使用承载令牌。这一切都很好,但如果我想在Web应用程序之外与这些API中的任何一个进行通信,我希望使用REST客户端。但是,我找不到一种方法来生成一个承载令牌/调用Login方法并获取一个承载令牌,以便在后续请求中用作授权头 我希望的是: 发布/帐户/登录 返回:令牌 发布/产品/创建 令牌头 身体要求 回报:成功还是失败 所有这些都不会丢失网站的现有功能 谢谢你的帮助 端点/Token已经提供了在WebAP
谢谢你的帮助 端点
/Token
已经提供了在WebAPI方法上使用[Authorize]
所需的所有功能。完成这项工作的一般过程如下所示:
public partial class Startup
{
// Enable the application to use OAuthAuthorization. You can then secure your Web APIs
static Startup()
{
PublicClientId = "web";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
AuthorizeEndpointPath = new PathString("/Account/Authorize"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
}
http://somesite.com/Token
。内容类型
标题应包含x-www-form-urlencoded
。有效负载正文应包括grant\u type=password&username=“username”&password=“password”
。grant\u type
值表示我们提供密码以交换访问令牌HTTP403
或HTTP200
。在http200
的情况下,响应主体将包括访问令牌
,令牌类型
(承载
),以及到期
访问\u令牌
,以备将来访问,然后建立对受保护服务器资源的新请求,包括头授权
,该头将是承载访问\u令牌
。此格式很重要,它必须以承载
和空格开头,然后是访问\u令牌
值public partial class Startup
{
// Enable the application to use OAuthAuthorization. You can then secure your Web APIs
static Startup()
{
PublicClientId = "web";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
AuthorizeEndpointPath = new PathString("/Account/Authorize"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
}
TokenEndpointPath
表示令牌请求的路径,AuthorizeEndpointPath
表示使用外部登录(Facebook、Twitter、Google等)时使用的路径。有关默认模板的详细信息,请参见
Taiseer Joudeh可在上找到此过程的更详细步骤以及用Angular.js编写的完整客户端应用程序。WebAPI处理令牌的方式与MVC相同;你到底有什么问题?客户端是否有问题,即如何处理从端点返回的承载令牌?没有,我想我不知道如何向现有方法发出请求。例如,当前存在的登录方法要求使用LoginModel并需要AntiForgeryToken。此方法执行重定向操作。