Php Laravel多重身份验证md5和主键字符串
目前我有一个项目需要使用extend mysql数据库,它有很多数据,密码是md5加密的,成员ID(主键)是这样的字符串Php Laravel多重身份验证md5和主键字符串,php,mysql,laravel,laravel-5,laravel-5.2,Php,Mysql,Laravel,Laravel 5,Laravel 5.2,目前我有一个项目需要使用extend mysql数据库,它有很多数据,密码是md5加密的,成员ID(主键)是这样的字符串 <?php namespace App\Models; use Auth; use Illuminate\Auth\Authenticatable; use Illuminate\Foundation\Auth\Access\Authorizable; use Illuminate\Contracts\Auth\Authenticatable as Authenti
<?php
namespace App\Models;
use Auth;
use Illuminate\Auth\Authenticatable;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
class Member extends BaseModels implements AuthenticatableContract, AuthorizableContract
{
use Authenticatable, Authorizable;
protected $connection = 'mysql_db2';
protected $table = 'tb_member';
protected $primaryKey = 'MEMBER_ID';
protected $fillable = [];
public $incrementing = false;
protected $hidden = ['PASSWORD'];
public function getAuthIdentifier() {
return $this->MEMBER_ID;
}
public function setPASSWORDAttribute($value) {
$this->attributes['PASSWORD'] = static::encryptPassword($value);
}
public function setPassword($password) {dd('set');
$this->PASSWORD = static::encryptPassword($password);
}
public function getAuthPassword() {dd('get');
return $this->PASSWORD;
}
public static function encryptPassword($password) {
return md5($password);
}
public function checkLogin($username, $password) {
if ($this->USERNAME == $username && $this->PASSWORD == static::encryptPassword($password)) {
return true;
} else {
return false;
}
}
}
5e3bb0bdb70e4f139c132cc32daace0e
密码字段名password和主键名成员ID
因此,我将雄辩的模型设置为这样
<?php
namespace App\Models;
use Auth;
use Illuminate\Auth\Authenticatable;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
class Member extends BaseModels implements AuthenticatableContract, AuthorizableContract
{
use Authenticatable, Authorizable;
protected $connection = 'mysql_db2';
protected $table = 'tb_member';
protected $primaryKey = 'MEMBER_ID';
protected $fillable = [];
public $incrementing = false;
protected $hidden = ['PASSWORD'];
public function getAuthIdentifier() {
return $this->MEMBER_ID;
}
public function setPASSWORDAttribute($value) {
$this->attributes['PASSWORD'] = static::encryptPassword($value);
}
public function setPassword($password) {dd('set');
$this->PASSWORD = static::encryptPassword($password);
}
public function getAuthPassword() {dd('get');
return $this->PASSWORD;
}
public static function encryptPassword($password) {
return md5($password);
}
public function checkLogin($username, $password) {
if ($this->USERNAME == $username && $this->PASSWORD == static::encryptPassword($password)) {
return true;
} else {
return false;
}
}
}
为什么会清除会话?我找到了解决方案,因为会话没有启动 app/Http/routes.php
//Frontend route
Route::group(array('namespace' => 'Frontend', 'middleware' => ['web']), function() {
Route::get('/', ['as' => 'frontend.index', 'uses' => 'IndexController@index']);
});
app/Http/kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
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,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'member' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
],
'api' => [
'throttle:60,1',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'web' => \App\Http\Middleware\Web::class,
];
}
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
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,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'member' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
],
'api' => [
'throttle:60,1',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'web' => \App\Http\Middleware\Web::class,
];
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class Web
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
return $next($request);
}
}