Asp.net
FormsAuthentication.GetRedirectUrl 始終返回預設值
我有一個 ASP.NET MVC 應用程序,並且正在使用 Forms auth。當轉到需要身份驗證的頁面時,這意味著有
$$ Authorize $$控制器操作上的屬性,它將使用者重定向到登錄頁面,返回 url 像
http://localhost/Login?ReturnUrl=/MyAuthorizedUrl. 這就是我的配置的設置方式:<authentication mode="Forms"> <forms loginUrl="~/Login" timeout="2880" defaultUrl="~/" /> </authentication>這就是我獲取重定向網址的方式:
var url = FormsAuthentication.GetRedirectUrl( model.Email, model.RememberMe );這總是返回預設的 url。
這是什麼原因造成的?
我假設您希望獲得“MyAuthorizedUrl”作為
FormsAuthentication.GetRedirectUrl?您需要插入一個隱藏的輸入欄位來鏡像
ReturnUrl=/MyAuthorizedUrl,例如name="ReturnUrl" value="/MyAuthorizedUrl".原因是登錄頁面是通過帶有 GET 的 GET 請求的
ReturnUrl,但 POST 轉到/Login(沒有任何參數)。或者更改表單操作屬性以包含
ReturnUrl參數。
如果您的登錄表單:
@using (Html.BeginForm ( "Login", "Account", new { ReturnUrl = Request.QueryString["ReturnUrl"] }, FormMethod.Post ))將“登錄”替換為您的操作名稱,將“帳戶”替換為您的控制器名稱。