Я пытался использовать auth :: попытки () для моей страницы входа. Но auth :: try () всегда возвращает false. Я пробовал все другие способы, доступные в более старых сообщениях stackoverflow, но все еще не мог найти правильное решение. Я новичок в laravel и хочу знать, как я могу проверить, совпадают ли 'email' и 'password' с какой-либо записью в моей таблице пользователей без использования аутентификации laravel?
users.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class users extends Authenticatable
{
use Notifiable;
protected $fillable = ['name', 'username', 'password', 'email',];
}
login.blade.php
<!DOCTYPE html>
<html>
<head>
<title>SUST ONLINE EXAM - Student Login</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style type="text/css">
.box{
width:600px;
margin:0 auto;
border:1px solid #ccc;
}
</style>
</head>
<body>
<br />
<div class="container box">
<h3 align="center">STUDENT LOGIN!</h3><br />
@if(isset(Auth::user()->email))
<script>window.location="/student";</script>
@endif
@if ($message = Session::get('error'))
<div class="alert alert-danger alert-block">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>{{ $message }}</strong>
</div>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form method="post" action="{{ url('/student') }}">
{{ csrf_field() }}
<div class="form-group">
<label>Enter Email</label>
<input type="email" name="email" class="form-control" />
</div>
<div class="form-group">
<label>Enter Password</label>
<input type="password" name="password" id="p1" class="form-control" />
</div>
<div class="form-group">
<input type="submit" name="login" class="btn btn-primary" value="Login" />
</div>
</form>
</div>
<!--
@foreach($data as $value)
<table>
<tr>
<td> {{ $value->email }} </td>
<td> {{ $value->password }} </td>
</tr>
</table>
@endforeach
-->
</body>
</html>
web.php
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('index');
});
Route::get('/welcome', function () {
return view('index');
});
Route::get('/register', function () {
return view('registration');
});
Route::get('/student', function () {
return view('studentRegistration');
});
Route::get('/create-exam', function () {
return view('createExam');
});
Route::get('/login', function () {
return view('login');
});
Route::get('/login', 'Controller@getdata');
Route::post('/student', 'Controller@checklogin');
//Route::get('/logout', 'LoginController1@logout');
//Route::get('/student', 'LoginController1@successlogin');
Route::post('/insert', 'Controller@insert');
//Auth::routes();
//Route::get('/home', 'HomeController@index')->name('home');
Controller.php
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use DB;
use Auth;
use Validator;
use Hash;
use App\users;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
function insert(Request $req)
{
$this->validate($req, [
'name' => 'required',
'username' => 'required',
'password' => 'required',
'email' => 'required'
]);
$Name = $req->input('name');
$Username = $req->input('username');
$Password = $req->input('password');
$Password = Hash::make('password');
$Email = $req->input('email');
DB::table("users")->insert(["name"=>$Name,"username"=>$Username,"password"=>$Password,"email"=>$Email]
);
// DB::table('users')->insert($data);
echo "user inserted";
}
function checklogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:3'
]);
$auth = array(
'email'=>$request->get('email'),
'password'=> $request->get('password'));
//dd($auth);
if(Auth::attempt($auth))
{
// return back()->with('error', 'RIGhT Login Details');
return redirect('student');
}
else
{
return back()->with('error', 'Wrong Login Details');
}
}
function successlogin()
{
return view('studentRegistration');
}
function logout()
{
Auth::logout();
return redirect('index');
}
public function getdata()
{
$data['data']=DB::table('users')->get();
return view('login',$data);
}
}
Я ожидал, что auth :: try () вернет true, когда я правильно введу электронную почту и пароль, сохраненные в моем mysql. Я новичок в laravel, мне нужно знать, есть ли другой способ проверить электронную почту и пароль без auth: : попытка ()?
Я сыт по горло этой вещью auth :: try ()!
Короткими строчками:
1) Пароль хешируется.
2) Auth :: try () всегда возвращает false
3) Я использовал mysql db, изменил модель users.php в соответствии с laravel User.php.