我正在使用OWIN认证编写SPA应用程序。最初,我的应用程序的建立是为了在IIS等我的授权选项的默认应用程序运行这个样子(TokenEndpointPath =“/令牌”)Web API 2 OWIN不记名令牌认证/如何更改/令牌路径
OAuthOptions = new OAuthAuthorizationServerOptions
{
//Exposes Token endpoint
TokenEndpointPath = new PathString("/Token"),
//Use ApplicationOAuthProvider in order to authenticate
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
AuthorizeEndpointPath = new PathString("/MyApp/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), //Token expiration => The user will remain authenticated for 14 days
AllowInsecureHttp = true
};
不过,我需要移动这一点,以便它不再默认的应用程序,但默认的IIS应用程序内的孩子申请了我所有的API调用会从这个路径去:
http://localhost:22657/
到:
http://localhost:22657/MyApp
因此,/令牌路径不再可达。所以,我改变了我的TokenEndpointPath是:
TokenEndpointPath = new PathString("/MyApp/Token"),
然而,当我验证自己的浏览器成功地进行呼叫,不过,从服务器的响应是从我Index.cshtml文件的HTML。我不知道如何诊断为什么WebApi以这种方式处理请求(这显然不是由OWIN处理的。当我在我的GrantResourceOwnerCredentials方法上设置断点时,断点未被命中)。
我的WebApi路由都没有配置“Token”。
1)有人知道端点上发生了什么,为什么它返回的是html而不是不记名令牌,或者我该如何解决它?
更新:
我猜它必须与指定索引以下缺省路由。这导致请求/ MyApp/Token被路由到Home/Index。有什么我可以用来代替“{* url}”以防止这种情况?
routes.MapRoute(
name: "Default",
url: "{*url}",
defaults: new { controller = "Home", action = "Index" }
);