我的laravel版本5.4.36 PHP版本:7.0.10 wamp 3
当我登录auth :: check()返回1但是在我重定向到其他视图或控制器后auth :: check()返回null我创建新项目whit lavavel 5.5但是没有修复如何解决我的问题? 我该怎么办?
user.php的
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'ID','Email','first_name','Last_name' ,'username', 'password','typeofuser',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
];
}
kernel.php
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\Illuminate\Session\Middleware\StartSession::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
}
web.php的一部分
Route::get('/Admin', function () {
return view('Adminlogin');
});
Route::group(['middleware' => ['web']], function () {
Route::get('/StartExamInfo/{id}', 'ExamController@Info');
Route::post('/Exam', 'ExamController@Start');
Route::post('/result','resultController@Add');
});
logincontroller.php
namespace App\Http\Controllers;
use App\admin;
use App\students;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\hash;
use Validator;
class LoginController extends Controller
{
public function Login(Request $request)
{
if (Auth::guard('web')->attempt(['username' => $request->username , 'password' => $request->password , 'typeofuser' => 1 ]))
{
$admin = new admin();
$admin->username = $request->username;
$admin->getuser();
$user = [$admin->ID,$admin->firstname,$admin->lastname,$admin->email,$admin->phonenumber,$admin->pic,$admin->expirtime];
return view('Admin_home',['user'=>$user]);
}
if (Auth::guard('web')->attempt(['username' => $request->username , 'password' => $request->password , 'typeofuser' => 2 ]))
{
$std = new students();
$std->username = $request->username;
$std->getuser();
$user = [$std->ID,$std->firstname,$std->lastname,$std->email,$std->pic,$std->expirtime];
return view('Student_home',['user'=>$user]);
}
else
return view('AdminLogin');
//$v = validator::make($request->all());
//
//$admin->auth($request->username,$request->password);
}
public function logout()
{
Auth::logout();
return view('AdminLogin');
}
}
答案 0 :(得分:0)
您正试图以错误的方式访问您的POSTed数据。您应该使用$request
对象发布用户的条目。此外,您可以使用单个身份验证条件对用户进行身份验证。用户进行身份验证后,请使用两个简单条件检查其typeofuser
字段。像这样:
public function Login(Request $request)
{
$credential = $request->only(['username', 'password']);
if (!Auth::attempt($credential))
return 'Username or Password is incorrect.';
// Now you can access to authenticated user model with `users` method in request object
$user = $request->user();
if($user->typeofuser == 1)
{
$admin = new admin();
$admin->username = $credential['username'];
$admin->getuser();
$user = [$admin->ID,$admin->firstname,$admin->lastname,$admin->email,$admin->phonenumber,$admin->pic,$admin->expirtime];
return view('Admin_home',['user'=>$user]);
}
elseif ($user->typeofuser == 2)
{
$std = new students();
$std->username = $credential['username'];
$std->getuser();
$user = [$std->ID,$std->firstname,$std->lastname,$std->email,$std->pic,$std->expirtime];
return view('Student_home',['user'=>$user]);
}
else
return view('AdminLogin');
}