Asp.net

如何設置 Azure Authentication 自定義登錄返回 url?

  • April 30, 2016

我按照這篇文章https://azure.microsoft.com/en-us/blog/announcing-app-service-authentication-authorization/為我的 MVC 應用程序設置 Azure 身份驗證。首先,我打開了 Azure AD 提供程序。在身份驗證/授權設置中,我為“請求未通過身份驗證時採取的操作”選擇了“允許請求(無操作)”,因為我只需要使用者登錄某些控制器操作。

然後我添加了一個自定義 FilterAttribute 來檢查一個操作是否需要身份驗證,如https://stackoverflow.com/a/26652816/1837339中所示。在 OnAuthenticationChallenge 函式中,我將這段程式碼重定向到登錄頁面:

public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
   if (filterContext.Result is HttpUnauthorizedResult) {
       filterContext.Result = new RedirectResult("~/.auth/login/aad");
   }
}

所有這些都有效,除了在使用者完成身份驗證後,它會被重定向回 mysite/.auth/login/done 頁面,顯示“您已成功登錄”和一個返回我網站的基本 URL 的按鈕。

我想要的是重定向回到使用者的原始 url,所以我想我需要以某種方式設置登錄重定向的返回 url。但我找不到任何關於此的文件。任何人都可以提供任何建議嗎?

您可以使用post_login_redirect_url查詢字元串參數來執行此操作。

例如,如果你想在使用者登錄後自動導航到**/welcome.html**,你可以將你的登錄重定向設置為**~/.auth/login/aad?post_login_redirect_url=/welcome.html**,使用者將被重定向到此頁面而不是通用歡迎頁面。

謝謝你。這真的很有幫助。以下對我來說沒問題:

    return RedirectToAction(string.Format("login/{0}?post_login_redirect_url=/Home/LoginCallBack", provider), ".auth");

provider 可以是字元串之一:google、twitter、microsoftaccount、aad、facebook。

此外,還必須在 Azure 門戶上為您的項目配置每個提供程序。

重定向 url 可以是您項目中的任何 uri

引用自:https://stackoverflow.com/questions/34348271