2012-03-20 15 views

答えて

0

バックドアアクセスを取得する場合は、ユーザーのパスワードを知る必要はありません。ユーザー名だけ。

FormsAuthentication.SetAuthCookie(username, false)と書いてください。

この機能へのアクセスを制限するようにしてください。たとえば、「認証エージェント」というロールを作成します。バックドアアクセスを実行するコントローラーアクションメソッドでは、「認証エージェント」ロールのユーザーに対してのみ許可するようにしてください。

[HttpPost] 
[Authorize("Authentication Agent")] 
public virtual ActionResult SignInAs(SignInAsForm model) 
{ 
    if (model != null) 
    { 
     MembershipUser member = null; 
     if (!string.IsNullOrWhiteSpace(model.UserName)) 
     { 
      model.UserName = model.UserName.Trim(); 
      member = Membership.GetUser(model.UserName); 
     } 

     if (member == null) 
      ModelState.AddModelError("UserName", string.Format(
       "Username '{0}' could not be found.", model.UserName)); 

     if (ModelState.IsValid) 
     { 
      Session["WasSignedInAs"] = User.Identity.Name; 
      FormsAuthentication.SetAuthCookie(model.UserName, false); 
      TempData["FlashMessage"] = string.Format(
       "Impersonation was successful. You are signed in as {0}.", 
        model.UserName) 
      if (!string.IsNullOrWhiteSpace(model.ReturnUrl)) 
       return Redirect(model.ReturnUrl); 
      return RedirectToAction(FormsAuthentication.DefaultUrl); 
     } 
     return View(model); 
    } 
    return HttpNotFound(); 
} 
+0

明日お試しいただきありがとうございます。 –

+0

それは完璧に働いた、もう一度ありがとう! –

関連する問題