在MVC中執行操作之前,如何強制用戶重新進行驗證?在MVC應用程序中重新驗證用戶的操作
我們正在使用Windows身份驗證。我們希望確保用戶正在執行一些操作(並且在用戶忘記鎖定工作站時阻止其他用戶執行這些操作)。
理想我只希望能夠寫一個擴展Authorize
屬性:
namespace AuthTest.Controllers
{
[Authorize(Roles="MyApp")]
public class HomeController : Controller
{
public ActionResult Index()
{
// A regular action
return View();
}
[ReAuthenticate]
public ActionResult CriticalAction()
{
// Do something important
return View();
}
}
}
看來,我可以強制用戶重新輸入其憑據由具有自定義屬性ReAuthenticate
發出HTTP 401
響應在AuthorizeCore
方法中。然而,這需要一些掛羊頭賣狗肉,因爲Html.ActionLink
將派遣兩個請求:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool ok = base.AuthorizeCore(httpContext);
if (!ok) return false;
if (httpContext.Session["ReAuthCnt"] == null)
{
httpContext.Session["ReAuthCnt"] = 1;
return false;
}
else if ((int) httpContext.Session["ReAuthCnt"] < 2)
{
httpContext.Session["ReAuthCnt"] = (int)httpContext.Session["ReAuthCnt"] + 1;
return false;
}
else
{
httpContext.Session["ReAuthCnt"] = 0;
return true;
}
}
有沒有更好的方式來完成的重新授權?
你是什麼意思的重新認證? –
你爲什麼想要?如果用戶通過了身份驗證,那麼他們就可以通過身份驗證。如果您無法維護身份驗證,則可以考慮使用OAuth。也許如果你將問題描述得多一點,我們可以建議做什麼。 – griegs
我已經更新了有關場景和我所嘗試的更多細節的問題。 – user2813199