2017-04-20 10 views
-1

資格情報が間違っていても、ログインはログアウトに変更されますが、nullの場合はログインします。なぜならもし機能customer.User!= nullを、私はどのように行うことができ、それは間違った資格情報であればここで資格情報がasp.netで正しい場合、ログインをログアウトに変更してください

<ul class="nav navbar-nav navbar-right"> 
     @{ 
        AccountContactVM customer = (AccountContactVM)ViewBag.AccountData; 
       } 

       @if (customer.User != null) 
       { 
        <li class="dropdown"> 
         <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-user-circle fa-fw fa-lg" aria-hidden="true"></i>@customer.User.FirstName @customer.User.LastName<span class="caret"></span></a> 
         <ul class="dropdown-menu" role="menu"> 
          <li class="disabled"> 
           <div class="row"> 
            <div class="col-md-3"> 
             <i class="fa fa-user-circle" style="font-size:40px;padding:5px 20px;" aria-hidden="true"></i> 
            </div> 
            <div class="col-md-9"> 
             <p style="padding-top:5px;"> 
              @customer.User.FirstName @customer.User.LastName <br /> 
              @customer.Company.AccountName 
             </p> 

            </div> 
           </div> 
          </li> 
          <li class="divider"></li> 
          <li><a asp-controller="Account" asp-action="Index">Customer Portal</a></li> 
          <li class="divider"></li> 
          <li><a a asp-controller="Account" asp-action="LogOut">Logout</a></li> 
         </ul> 
        </li> 
       } 
       else 
       { 
        <li><a asp-controller="Account" asp-action="SignUp">Register</a></li> 
        <li><a asp-controller="Account" asp-action="SignIn"><i class="fa fa-sign-in fa-fw" aria-hidden="true"></i>Login</a></li> 
       } 
       <li ng-cloak><a href="@Url.Action("Index","Cart")"><span class="glyphicon glyphicon-shopping-cart"></span></i>Cart(<strong>{{CartCount}}</strong>)</a></li> 
      </ul> 

は、ビュー コントローラー・コードの要件をまとめる

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public IActionResult SignIn(UserLogin user) 
    { 
     //Account Varialble 
     Models.CustomerModel.Account account = new Models.CustomerModel.Account(); 

     //Contact Variable 
     Models.CustomerModel.Contact contact = new Models.CustomerModel.Contact(); 

     AccountContactVM customer = new AccountContactVM(); 


     var a = user.Password.GetHashCode(); 
     ViewBag.CartItemCount = cartItemCount; 
     if (ModelState.IsValid) 
     { 

      LoginAction login = new LoginAction(); 
      contact = login.ContactProfile(user); 
      if (contact.ContactId != Guid.Empty) 
      { 
       if(contact.Authenticated == false) 
       { 
        ViewBag.Message = "Your account is not confirmed."; 

        customer.Company = account; 
        customer.User = contact; 
        ViewBag.AccountData = customer; 
        return View(user); 
       }else 
       { 
        account = login.AccountProfile(contact.AccountId); 
        if (account.AccountId != Guid.Empty) 
        { 
         customer.Company = account; 
         customer.User = contact; 
         helper.SetObject("accountcustomer", customer); 
         ViewBag.AccountData = customer; 
         return RedirectToAction("Index","Home"); 
        } 

        ViewBag.AccountData = customer; 
        ViewBag.Message = "Unable to find company profile"; 
        return View(user); 
       } 

      } 

      customer.Company = account; 
      customer.User = contact; 

      ViewBag.AccountData = customer; 
      ViewBag.Message = "Invalid credentials"; 
      return View(user); 

     } 
     return View(user); 
    } 
+0

コントローラからユーザーの資格情報を確認するコードを追加できますか? – Ignas

+0

はい、すでに編集済みです –

+0

これを実装する方法はいくつかあります。明確にするもう1つのこと - 「ログアウト」とはどういう意味ですか?あなたのビューのどの部分が「ログアウト」ですか? – Ignas

答えて

0

のための私のコントローラのコードです。

  • ユーザーのログイン資格情報が間違っている場合でも、ビューの「ログイン」部分を表示する必要があります。個人的に

お使いのコントローラのコードから、私がlogin.ContactProfile(user)によって返さcontactオブジェクトがnullになることはありませんし、contact.ContactIdが空のGUIDであるときと仮定しています、私は、...とにかく

ここでは、ビジネス上の理由についてはかなりわかりませんユーザーが誤った資格情報を入力すると、「資格情報が無効です」というメッセージが表示されます。

既存のコーディングスタイルに従う簡単な解決策として、ビュー内にifの条件を追加することがあります。下記参照。

@if (customer.User != null || (customer.User != null && customer.User.ContactId == Guid.Empty) 

すべてのクラスのコードは表示されないため、この解決策は上記の前提に基づいています。

理想的には、部分的なビューと専用のビューモデルを持つようにコードをリファクタリングしますが、これははるかに大きな労力になります。

関連する問題