在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