1

管理者がフォームのすべてのコントロールにアクセスできるが、他の管理者はアクセスできないプロジェクトに取り組んでいます。どうすればこれを実装できますか?

1 つのアイデアは、ユーザーが admin でログインしたい場合、ログイン ソフトウェアがインターネット サービスが利用可能かどうかを確認してから、Google サーバーから選択する必要がある時間をメールし、そのタイミングをログイン情報と共にメールすることです。そのため、管理者は誰かがあなたのアカウントでログインすることを警告する必要があります。

しかし、インターネットサービスが利用できない場合は、その情報をテキストファイルに保存し、システムに配置する必要があります。サービスが利用可能になったら、管理者はそのログファイルを取得し、管理者でログインしているユーザーに尋ねますか?

4

1 に答える 1

0

アプリケーションでロギングを使用し、機密情報を含むページがアクセスされたときに好きなように動作するように構成した方がよいと思います。log4netMicrosoft Enterprise Library Logging Application Block、またはELMAHを使用できます。このようにして、情報をテキストまたは Xml ファイル、データベースに保存したり、電子メールを送信したりできます。

C#使用例log4net

private static log4net.ILog oLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
            if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
            {
                if (this.User.IsInRole("Administrators"))
                {
                    oLog.Info("Administrator logged in.");
                }
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
于 2013-02-24T06:15:44.647 に答える