2017-05-23 3 views
0

나는이 로그인 페이지를 만들었고 거의 완료되었지만 처음으로 로그인 암호를 변경하려고합니다. 웹 서비스에 메소드가 있는지 확인해야합니다. 첫 번째 로그인과 암호를 변경하고 내 데이터베이스에 저장하는 또 다른 방법은 사용자 입력란 2 개와 사용자 이름 1 개, 암호 1 개의 로그인 페이지가 있으며 로그인을 클릭하면됩니다. 처음 입력했는지 확인하고, 현재 입력 상자 2 개를 'Insert new pwd'와 'Repeat new pwd'로 바꾸고 싶습니다.하지만 그 일을 어떻게 할 지 모르겠군요. 보기,하지만 어디서나 찾을 수 없습니다. 이 내 볼 수 있습니다 :보기 내에서 MVC 실행

@model ProjectoEscolas.Models.UserGetInfo 
@{ 
    ViewBag.Title = "LoginEscolas"; 
} 
<link href="@Url.Content("~/bower_components/font-awesome/css/font-awesome.min.css")" rel="stylesheet" type="text/css" /> 
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> 
<link href="~/Content/login.css" rel="stylesheet" /> 

@using (Html.BeginForm("LoginEscolas", "Home", FormMethod.Post)) 
{ 
<body> 
    <img class="logotipos" src="../Images/logotipos.png"/> 
    <div class="login-form"> 
     <!--<img class="loginimg" src="../Images/logotipos.png">--> 
     <h1>Área Privada</h1> 
     <p>Para entrar na Área Privada da DGEstE, deverá escrever o Utilizador e a Palavra-Chave das aplicações da <br /> DGEEC(Ex-GEPE)</p> 
     <br />    
     <div class="form-group "> 
      @Html.TextBoxFor(u => u.username, new { placeholder = "Utilizador", @class = "form-control" }) 
      <i class="fa fa-user"></i> 
     </div> 
     <div class="form-group log-status"> 
      @Html.PasswordFor(u => u.password, new { placeholder = "Palavra-Chave", @class = "form-control" }) 
      <i class="fa fa-lock"></i> 
     </div> 
     <span class="alert">Invalid Credentials</span> 
     <input type="submit" value="Log In" class="log-btn">   
     @if (ViewBag.Error != null) 
     { 
      <h4 style="color:red">@ViewBag.Error</h4> 
     } 
    </div> 
</body> 
} 

그리고 이것은 사용 컨트롤러 메신저의 일부입니다 : 당신의 LoginEscolas에서

[HttpPost] 
    public ActionResult LoginEscolas(UserGetInfo user) 
    { 
     Debug.WriteLine("Error"); 
     if (user.username == null || user.password == null) 
     { 
      ViewBag.Error = "Insira os campos obrigatórios"; 
      return View(user); 
     } 
     else 
     { 
      if (isValid(Convert.ToInt32(user.username), user.password)) 
      { 
       FormsAuthentication.SetAuthCookie(user.username, false); 
       return RedirectToAction("Index", "Home"); 
      } 
     } 

     return View(new UserGetInfo()); 
    } 

    //public ActionResult LogOut() 
    //{ 
    // FormsAuthentication.SignOut(); 
    // return RedirectToAction("Login", "Home"); 
    //} 

    private bool isValid(int username, string password) 
    { 
     bool isValid; 

     int id = Methods.LoginEscolas(username, password); 
     if (id != 0) 
     { 

      Methods.InsertLogs_Escolas(id); 
      Debug.WriteLine(id); 
      isValid = true; 
     } 
     else 
     { 
      isValid = false; 
      Debug.WriteLine(id); 
      ViewBag.Error = "Insira os seus dados correctamente"; 
     } 
     return isValid; 
    } 

    public bool haschanged(int username,string password) 
    { 
     int id = Methods.LoginEscolas(username, password); 
     if (!Methods.hasChangedPwd_Escolas(id)) 
     { 
      return false; 
     }else 
     { 
      return true; 
     } 
    } 

    public void changePwd(int username,string password,string newPwd) 
    { 
     int id = Methods.LoginEscolas(username, password); 
     Methods.changePwd_Escolas(id, newPwd); 
    } 
+0

이 2 개 별도의 방법과 (별도의 뷰 모델) 전망을해야한다 -'Register' 액션과 등록이되지 않습니다 @StephenMuecke'Login' 액션 –

+0

, 이것은이 회사입니다 회사 사용자에게는 na ID와 비밀번호가 주어지며 처음 로그인 할 때 비밀번호를 변경해야합니다. 명확하지 않은 경우 죄송합니다. – Wood

답변

0

처음 로그인이 있는지 데이터베이스를 확인 Action. 이를 위해 사용자 테이블에 사용자가 이미 로그인 한 경우 저장해야하는 필드가 있어야합니다. 처음 로그인하면 사용자를 다른보기로 다른 작업으로 리디렉션 할 수 있습니다 (ChangePassword). 이제 ChangePassword보기에서 사용자로부터 새 비밀번호를 얻을 수 있습니다.

[HttpPost] 
public ActionResult LoginEscolas(UserGetInfo user) 
{ 
    Debug.WriteLine("Error"); 
    if (user.username == null || user.password == null) 
    { 
     ViewBag.Error = "Insira os campos obrigatórios"; 
     return View(user); 
    } 
    else 
    { 
     if (isValid(Convert.ToInt32(user.username), user.password)) 
     { 
      FormsAuthentication.SetAuthCookie(user.username, false); 
      return RedirectToAction("Index", "Home"); 
     } 
    } 
    if(isFirstLogin(Convert.ToInt32(user.username), user.password))) 
    { 
     setFirstLogin(Convert.ToInt32(user.username)); 
     return RedirectToAction("ChangePassword"); 
    } 
    return View(new UserGetInfo()); 
} 
[HttpGet] 
public ActionResult ChangePassword(int userName) 
{ 
    var model = new UserGetInfo { 
     username = username 
    }; 
    return View(model); 
} 
[HttpPost] 
public ActionResult ChangePassword(int userName, string newPassword) 
{ 
    // Change user password 
} 
public bool isFirstLogin(int username) 
{ 
    // Check database to see if it is first login 
} 
public bool setFirstLogin(int username) 
{ 
    // Set FirstLogin to false for this user 
} 
관련 문제