2009-08-26 13 views
4

ImはHttpContext.Userの使用方法を失いました。私はFormAuthericationのための素晴らしいことをどこでも読んでいますが、私はそれがどのように動作するか見ていません。もし私がこのようなことをすれば:ASP.NET MVC:HttpContext.Userの使用方法

ControllerContext.HttpContext.User = new GenericPrincipal(GetUser(username, password), roles); 

ControllerContext.HttpContext.Userには何が入っていますか?この方法でユーザーの情報にアクセスするにはどうすればよいですか?

public User GetUser(string username, string password) 
    { 
     try 
     { 
      var user = (from u in dm.Users 
         join r in dm.Roles 
         on u.Role_ID_FK equals r.RoleID 
         where u.Username.Equals(username) && u.Password.Equals(password) 
         select u).Single(); 

      return user; 
     } 
     catch (Exception e) 
     { 
      return null; 
     } 
    } 

と私は私の見解でユーザー情報が必要な場合は、その後、ユーザー名またはロールのように、私はControllerContext.HttpContext.User.Usernameで呼び出すことができます。

イムは、私はこのようなアクションを持っていると思います私の見解。しかし、これはそれを見て間違った方法です。

あなたは私にリグの方向にキックを与えたり、できるサイトへのリンクを投稿できますか?ログインコード使用で

+1

HttpContextオブジェクトの.Netドキュメントをチェックしましたか?それが私が見ている最初の場所だろう。 – Lazarus

答えて

9

を使用することができます私はあなたのコードをあなたと一緒にやろうとしている正確に何か分かりません投稿されましたが、ここにHttpContext.Userのヘルプがあります。素人の言葉では、それは現在のユーザが特定のページをリクエストしていることを表しています。実際にあなたのコントローラ内では、接頭辞なしで単に「ユーザ」として参照できます。

User.Identityは、ユーザーが認証されているかどうか、ユーザー名とその認証方法(フォームまたはWindows)を知らせます。

一般的にはを取得します。コントローラの動作が正しい義務を実行できるようにページを要求しているユーザのユーザ名を取得します。ような何か:ユーザーが認証されていない場合は、この例では

public ActionResult Index() 
{ 
    //you should probably use the [Authorize] attribute on the Action Method 
    //but you could check for yourself whether the user is authenticated... 
    if (!User.Identity.IsAuthenticated) 
     return RedirectToAction("LogIn"); 

    MyUser u = repository.GetUser(User.Identity.Name); //lookup user by username 
    ViewData["fullname"] = u.FullName; //whatever... 
    return View(); 
} 

は、彼らがログオンページにリダイレクトされ、彼らがされている場合は、アクションメソッドは、(User.Identity.Nameを使用していますMyUserオブジェクトのインスタンスを検索してデータベースから取得し、ViewDataにそのユーザーのフルネームを表示するために、ログインしたユーザー名またはWindowsログイン名)を入力します。

4

FormsAuthentication.SetAuthCookie("userName", remeberMe); 

認証されたユーザを設定するには、その後、あなたは

<%= User.Identity.Name %> 
<%= User.IsInRole("role") %> 
関連する問題