4

Visual Studio 2010 - MVC 3

アクセスを制限したいasp.net mvcアプリケーションの管理セクションがあります。アプリケーションはアカウントを使用しないため、管理者の役割やユーザーを使用してアクセスを承認することはありません。

単一のパスワードを入力するだけでセクションにアクセスできるようにしたい。このセクションには多くのアクションがあります。さまざまなビューにリダイレクトする管理コントローラーをセットアップしたので、基本的に、このコントローラーが制御するビューはすべて制限する必要があります。

また、セッション中にパスワードを 1 回だけ入力するだけで済むようにしたいので、ブラウザを閉じて再度開いたときにパスワードを再入力する必要があります。

どうすればこれを達成できますか?

4

2 に答える 2

16

Protected(コントローラーとして)というビューフォルダーがあり、複数のビューを指す複数のアクションがあると仮定すると、次のようになります。

  • コントローラー/アクションをアクションフィルターで装飾します。次に例を示します。[SimpleMembership]
  • そのアクションフィルターで、セッション変数の存在と内容を確認するだけです
  • SignIn正しくない場合はにリダイレクトします

コードで:

public class SimpleMembershipAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //redirect if not authenticated
        if (filterContext.HttpContext.Session["myApp-Authentication"] == null ||
            filterContext.HttpContext.Session["myApp-Authentication"] != "123")
        {
            //use the current url for the redirect
            string redirectOnSuccess = filterContext.HttpContext.Request.Url.AbsolutePath;

            //send them off to the login page
            string redirectUrl = string.Format("?ReturnUrl={0}", redirectOnSuccess);
            string loginUrl = "/Protected/SignIn" + redirectUrl;
            filterContext.HttpContext.Response.Redirect(loginUrl, true);
        }
    }
}

とあなたのコントローラー

public class ProtectedController : Controller
{
    [SimpleMembership]
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult SignIn()
    {
        return View();
    }
    [HttpPost]
    public ActionResult SignIn(string pwd)
    {
        if (pwd == "123")
        {
            Session["myApp-Authentication"] = "123";
            return RedirectToAction("Index");
        }
        return View();
    }
}

全体を装飾したい場合は、そこに到達するためにメソッドを外部controllerに移動する必要があります。認証を受ける必要があります。SignIn


ソースコード:

シンプルなMVC3ソリューションhttp://cl.ly/JN6Bダウンロードするか、 GitHubで自由にコードを表示できます。

于 2012-09-11T22:21:35.520 に答える
1

フォーム認証を使用します。次に、制限するコントローラーまたは個々のアクションに[Authorize]属性を追加します。次に、電気ショック療法にログインする方法が必要になります。役立つフォーム認証の希望に関する情報については、こちらをご覧ください

ユーザー名とパスワードを構成ファイルやデータベースなどに保存して、いつでも独自の認証システムを作成できます。[承認]を上書きするか、独自のアクションフィルタを作成して、必要に応じて使用できます。完全なフォーム認証を使用したくない場合。

于 2012-09-11T22:05:35.453 に答える