我明白,要改變URL [授權]帶你到。你有在web.config中編輯這行如何改變使用[授權]時的重定向
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
如果我有網頁的兩種跡象,我希望人們從重定向一個控制器到URL/F /登入人們從另一個控制器/ S /簽到?
我明白,要改變URL [授權]帶你到。你有在web.config中編輯這行如何改變使用[授權]時的重定向
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
如果我有網頁的兩種跡象,我希望人們從重定向一個控制器到URL/F /登入人們從另一個控制器/ S /簽到?
您可以將loginUrl
指向適當重定向用戶的操作。
這將是這個樣子:
public class MySpecialLoginController:Controller
{
public ActionResult Index(string returnUrl)
{
if(returnUrl.EndsWith("/foo")) //dirty. you could do better...
{
return RedirectToAction("signin","f");
}
//etc
}
}
,並假設默認路由,loginUrl
將具有價值"~/MySpecialLogin"
當aspnet auth決定用戶沒有訪問頁面(假設它是'foo/bar')時,它發出一個重定向到'loginUrl'的查詢字符串,如'?returnUrl = foo% 2fbar「,這樣在你登錄後,你可以返回到你來的地方。簡而言之,它會自動填充。 – spender
嗯似乎應該工作,但它不是?我在f控制器中做了一個名爲Redirector(string ReturnUrl)的動作,我在那裏放了一個斷點,但是即使這個URL顯示在/ f/Redirector中也沒有進入?ReturnUrl =%2fF%2fprofileperson%3fid%3d21&id = 21 – Newbie
沒關係沒有工作,因爲我使用的是httppost。很棒!謝謝 – Newbie
在一個額外的重定向的成本,最簡單的方法我能想到的解決這個的將會是用一個動作來替換'loginUrl',這個動作決定了用戶在哪個類別,然後將它們重定向到合適的登錄操作。 – spender
您需要將'returnUrl'作爲重定向操作的字符串參數(即'loginUrl'指向的操作)。初始認證重定向將在查詢字符串中提供此值。您可以對其進行逆向工程,以發現用戶來自哪裏。 – spender
如何將字符串參數傳遞給web.config? – Newbie