7

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.ActionLink2 つのリクエストを送信していたため、これにはいくつかのトリックが必要でした。

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;
    }
}

再認証を行うためのより良い方法はありますか?

4

4 に答える 4

0

ユーザーが POST を実行している場合、そのフォームにユーザー名とパスワードのフィールドを追加してから、コントローラーまたは ActionFilter を使用して Active Directory に対して資格情報を検証できますか?

于 2013-12-31T20:08:13.490 に答える