راکت

پسورد در لاراول

7 پاسخ

@ali.bayat
جدا از login,registerآماده خود لاراول من خودم ریجستر ساختم و پسورد خود را با bcrypt رمز نگاری کردم زمانی که لاگین می خواهم ایا پسورد وارد شده رو باید bcryptکنم و بعد پسورد خود را با پسورد دیتابیس مقایسه کنم یا برعکس
من هر دو رو انجام دادم نمیشه .منظورم اینکه رمزنگاری میشه اما زمانی که می خوام از رمزنگاری خارج کنم و مقایسه کنم نمیشه

ثبت پرسش جدید

پاسخ‌ها

7
Reza ghz
Reza ghz
@rezaghasemzadeh1

پسورد رمز نگاری شده رو نمیتونید به حالت اول برگردونید
توی لاراول میتونید با Auth::attempt() اینکارو کنید یا برای دستی انجام دادن از تابع paasword_verify()

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

نباید پسورد رو از حالت رمزنگاری خارج کنی.. باید پسورد رو اینکریپت شده ذخیره کنی و پسوردی که کاربر وارد میکنه رو هم اینکریپت کنی و بعد مقایسه

شاید پاسخ شما همین‌جا باشد

1masoud
1masoud
@masoudproton

تخصص: php,laravel

@ali.bayat


الان کد من اینه 
$c=['password'=>$password];
if(Auth::attempt($c)){
                dd("yes");
                   }else{
                dd("no");}
‍‍‍```
اما گار نمیکنه
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

چون متد Auth::attempt به Email و Password نیاز داره. Email رو هم باید در آرایه داشته باشید

1masoud
1masoud
@masoudproton

تخصص: php,laravel

@ali.bayat
من لاگینی نوشتم که یا ایمیل میگیره یا موبایل
زمانی که موبایل میگیره رمزش رو می خوام بررسی کنم ایا متدد دیگری وجود داره الان باید چیکار کنم

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بالاخره این متد فقط password نمی‌خواهد.

در LoginController یه متد credentials هست که کم و بیش باید شبیه زیر بشه:

<?php

namespace App\Http\Controllers\Auth;
use Socialite;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    /**
     * Redirect the user to the GitHub authentication page.
     *
     * @return \Illuminate\Http\Response
     */
      public function redirectToProvider($social)
      {
          return Socialite::driver($social)->redirect();
      }

      /**
       * Obtain the user information from GitHub.
       *
       * @return \Illuminate\Http\Response
       */
      public function handleProviderCallback($social)
      {
          $user = Socialite::driver($social)->user();

          // $user->token;
      }

      /**
       * Get the needed authorization credentials from the request.
       *
       * @param  \Illuminate\Http\Request  $request
       * @return array
       */
        protected function credentials(Request $request)
        {
          if(is_numeric($request->get('email'))){
            return ['phone'=>$request->get('email'),'password'=>$request->get('password')];
          }
          elseif (filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
            return ['email' => $request->get('email'), 'password'=>$request->get('password')];
          }
          return ['username' => $request->get('email'), 'password'=>$request->get('password')];
        }
}

اطلاعات بیشتر در لینک زیر:
https://stackoverflow.com/questions/47537191/laravel-login-with-username-email-or-phone

1masoud
1masoud
@masoudproton

تخصص: php,laravel

@ali.bayat


الان کد من اینه که خودم ریجسترو لاگین نوشتم از لاگین و ریجستر لاراول استفاده نکردم
public function login۲(\Illuminate\Http\Request $request)
    {
        $tt= session()->get('login');

//$re=encrypt($request->get('password'));

        $y=Hash::make($request->get('password'));
        if(preg_match("/^۰۹[۰-۹]+.{۸}$/", $tt)){
            if(User::where([['mobile',$tt],['password',$y]])->first()){
                return redirect('index');
            }else{
                return redirect("login۲")->withErrors("رمز اشتباه است");
            }
        }else{
            if(User::where([['email',$tt],['password',$request->get('password')]])->first()){
                return redirect('index');
            }else{
                return redirect("login۲")->withErrors("رمز اشتباه است");
            }
        }
}
اما پسورد دیتابیس با پسورد که وارد میکنم با خم برابر نیست اما زمانیکه پسورد دیتابیس رو از حالت انکریپت در می آورم درست میشه
‍‍‍```

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام