使用個人用戶帳戶從ASP.NET 5 Web App模板開始我設法使用Microsoft帳戶獲得外部身份驗證。當用戶點擊登錄,他們將被重定向到ExternalLogin
在AccountController
這樣重定向登錄到控制器操作
<form asp-controller="Account" asp-action="ExternalLogin" method="post" asp-route-returnurl="@ViewData["ReturnUrl"]" class="nav navbar-right">
<button type="submit" class="btn btn-null nav navbar-nav navbar-right" name="provider" value="Microsoft" title="Log in"><span class="fa fa-sign-in"/> Log In</button>
</form>
這讓他們在使用微軟thier帳戶登錄和一切似乎很好地工作。但是,如何攔截直接訪問特權操作[Authorize]
,以便用戶重定向到ExternalLogin
?可以在Startup.cs
中設置默認操作嗎?
編輯1試圖按照@ Yves的建議,我在Filters文件夾中創建了CustomAutorizationFilter
。它不檢查任何條件
public class CustomAutorizationFilter : IAuthorizationFilter
{
public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
{
//if (...) // Check you conditions here
//{
context.Result = new RedirectToActionResult("ExternalLogin", "Account", null);
//}
}
}
,並編輯ConfigureServices
如下
services.AddMvc(config =>
{
config.Filters.Add(typeof(Filters.CustomAutorizationFilter));
});
當我在本地運行的應用程序不再轉到主頁。它返回一個空白http://localhost:52711/Account/ExternalLogin
顯然有很多我不明白。
編輯2:這裏是ExternalLogin
// POST: /Account/ExternalLogin
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public IActionResult ExternalLogin(string provider, string returnUrl = null)
簽名這是怎麼ExternalLogin
出來,在ASP.Net 5 Web應用程序模板的開箱。
我想你編輯後可能會有重定向循環。嘗試將'AllowAnonymousAttribute'添加到'ExternalLogin'控制器。如果我沒有弄錯那個屬性繞過'IAuthorizationFilter'。你可以調試它看看發生了什麼。我不是在一臺電腦的自動櫃員機。所以我無法檢查它。 – Yves
我已將「ExternalLogin」的簽名添加到我的問題中。 – Vague
@Yves關於重定向循環是正確的。它通過保持'context.Result =新RedirectToActionResult( 「ExternalLogin」, 「帳戶」,NULL)循環;'不會去訪問'ExternalLogin' – Vague