2013年4月21日 星期日

Entity Framwork 使用 SQL的PWDCOMPARE函數


要使用SQL的PWDCOMPARE 函數,必須先將邏輯寫進StoreProcedure或是SQL function裡面,這裡以StoreProcedure為例
  • 先建立StoreProcedure在裡面使用PWDCOMPARE函數比對密碼是否正確,成功傳回1,失敗傳回0

  • create procedure sp_CheckLoginPassword
     @Account varchar(50),
     @Password varchar(150)
    as
     declare @validate int
     set @validate = (
     select PWDCOMPARE(@Password,tcuser.Password)
     from tcuser
     where tcuser.Account = @Account)  
     select isnull(@validate,0)
    
  • 建立Entity Framwork,將剛剛寫的StoreProcedure更新進來
  • 透過Entity Framwork建立出來的物件呼叫該方法就大功告成了!!
    public bool CheckPassword()
    {
      //傳回0表示驗證失敗; 1表示成功
      NTIEntities db = new NTIEntities();
      bool isValidate = db.sp_CheckLoginPassword(this.Account, this.Password).First() == 1 ? true : false;
      return isValidate;
    }
    
  • 驗證方法成功後呼叫FormsAuthentication.RedirectFromLoginPage(),告訴網站該使用者已經成功登入
    if (Acclogin.CheckPassword())
    {                     
      FormsAuthentication.RedirectFromLoginPage(Acclogin.Account, false);
      return Redirect(returnUrl);
    }
    

1 則留言: