我正在使用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" }
);