2017-01-22 4 views
0

私はMVCと共にWCFプロジェクトを作成しました。私は正常に実装することができたユーザーを登録しログインするために、デフォルトのMVCテンプレートinorderのSimpleMembershipデータベースを実装しました。しかし、同じWebSecurity.Login(UserName、Password)メソッドを使用して、同じデータベーステーブル、つまりUserProfiels(UserId、UserName)、webpages_Membership(UserId、Password、PasswordSalt、....)をクエリできませんでした。WebSecurity.Exists(username)がtrueを返している間にWebSecurity.Login(username、password)がfalseを返すのはなぜですか?

public string LoginService(string UserName, string Password) 
    { 
     try 
     { 

      string answer = null; 
      if (WebSecurity.UserExists(UserName)) // returns true 
      { 
       if(WebSecurity.Login(UserName,Password)) // always return false 
       { 
        string role = Roles.GetRolesForUser(UserName).FirstOrDefault(); 
        answer = role; 

       } 

      } 
      return answer; 



     } 
     catch (Exception) 
     { 
      return null; 
     } 
    } 

を次のようにMVCプロジェクトでの登録方法は

// Attempt to register the user 
      try 
      { 
       WebSecurity.CreateUserAndAccount(model.UserName, model.Password);     
       WebSecurity.Login(model.UserName, model.Password); 
       return RedirectToAction("Index", "Home"); 
      } 
      catch (MembershipCreateUserException e) 
      { 
       ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
      } 

WebSecurity.Login(ユーザー名、パスワード)としてWCFプロジェクトでの方法は、私がなぜWebSecurity.Login(ユーザ名、パスワードを不思議です)は、ユーザー名とパスワードが存在するUserProfileテーブルとwebpages_Membershipテーブルにデータを入力することはありません。

web.configファイルはdb connectionとWCF Restバインディングのデフォルト設定が完全​​に更新されているため、更新されていません。

私はここで見てhttps://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.login(v=vs.111).aspxとgoogleで検索したが、満足のいく解決策を見つけることができませんでした。

コードスニペットまたは提案を高く評価します。

は、私はあなたが別のサイトなど、MVCとWCFアプリケーションを実行していることを仮定していること、およびデータベースに表示されてユーザーを見ている

答えて

0

ありがとうございます。

デフォルトでは、何も変更しないと、ASP.NETはサイトごとに異なるアプリケーション名を生成します(the remarks hereを参照)。ユーザーはアプリケーションによってパーティション分割されます。 WCFサイトのユーザーと連絡をとってください。

docs for UserExists状態:

方法は、ユーザがユーザプロファイルテーブルに存在することを検証します。ただし、そのユーザーのメンバーシップアカウントが存在することを確認することはありません。

プロファイルが同じ方法でパーティション化されていないように見えます。

メンバーシップの設定でApplicationNameを設定すると、両方のアプリケーションで同じデータベースとログインを使用できるようになります。

関連する問題