@ali.bayat
جدا از login,registerآماده خود لاراول من خودم ریجستر ساختم و پسورد خود را با bcrypt رمز نگاری کردم زمانی که لاگین می خواهم ایا پسورد وارد شده رو باید bcryptکنم و بعد پسورد خود را با پسورد دیتابیس مقایسه کنم یا برعکس
من هر دو رو انجام دادم نمیشه .منظورم اینکه رمزنگاری میشه اما زمانی که می خوام از رمزنگاری خارج کنم و مقایسه کنم نمیشه
پسورد رمز نگاری شده رو نمیتونید به حالت اول برگردونید
توی لاراول میتونید با Auth::attempt() اینکارو کنید یا برای دستی انجام دادن از تابع paasword_verify()
نباید پسورد رو از حالت رمزنگاری خارج کنی.. باید پسورد رو اینکریپت شده ذخیره کنی و پسوردی که کاربر وارد میکنه رو هم اینکریپت کنی و بعد مقایسه
الان کد من اینه
$c=['password'=>$password];
if(Auth::attempt($c)){
dd("yes");
}else{
dd("no");}
```
اما گار نمیکنه
چون متد Auth::attempt به Email و Password نیاز داره. Email رو هم باید در آرایه داشته باشید
@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
الان کد من اینه که خودم ریجسترو لاگین نوشتم از لاگین و ریجستر لاراول استفاده نکردم
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("رمز اشتباه است");
}
}
}
اما پسورد دیتابیس با پسورد که وارد میکنم با خم برابر نیست اما زمانیکه پسورد دیتابیس رو از حالت انکریپت در می آورم درست میشه
```
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟