不要看这个文章了。写的根本就不对!
不要看这个文章了。写的根本就不对!
不要看这个文章了。写的根本就不对!
研究一翻,竟然成了,不过是懵懵懂懂啊。。
目的是实现前后台用户的分别登录,这样就对应两个表了。。laravel5默认是对应users表,我再建立一个admins表,用来后台登录。
直接上吧,最主要就是有两个config设置:
Config::set('auth.model', 'App\Model\admin\admin');
Config::set('auth.table', 'admins');
一个是修改登录模型,一个是对应的认证表。
1.建立中间件 make:middleware AdminAuth
然后记得在你的路由组中添加这人过滤中间件
这是用来过滤的,没有登录就跳转到登录页面。
public function handle($request, Closure $next)
{
//修改一下auth的默认登录表
//echo Auth::getFacadeApplication()->config['auth']['table'];
Config::set('auth.model', 'App\Model\admin\admin');
Config::set('auth.table', 'admins');
//dd(Auth::getFacadeApplication()->config['auth']['table']);
if(Auth::check()){
//已经登录
//dd('s');
}
else{
//还没有登录
//dd('not login');
return redirect()->guest('admin/login');
}
return $next($request);
}
修改Kernel文件中 $routeMiddleware的数组,添加命名我们的中间件
//后台管理的中间件 'adminauth' => 'App\Http\Middleware\AdminAuth'
2.实现登录验证操作
public function loginHandle()
{
//下边两个设置很重要
Config::set('auth.model', 'App\Model\admin\admin');
Config::set('auth.table', 'admins');
//
$username = Input::get('username');
$password = Input::get('password');
$rememberme = true;
if (Input::get('rememberme')){
$rememberme = true;
}
else{
$rememberme = false;
}
if(Auth::attempt([
'username' => $username,'password' => $password
],$rememberme))
{
//登录成功
return redirect(action('admin\AdminController@index'));
}
else {
//登录失败
return redirect(action('admin\AdminController@login'))
->withErrors("用户名或者密码不正确");
}
//
}
3.建立并修改 admin模型。因为用artisan生成的默认模型其实是没有验证功能的,所以我们生成后,直接照搬 框架自带的 users 模型,然后修改一下
protected $table = 'admins';
附我的admin 模型
<?php namespace App\Model\admin;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class Admin extends Model implements AuthenticatableContract, CanResetPasswordContract {
//
use Authenticatable, CanResetPassword;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'admins';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name', 'email', 'password'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
}
就好了。。
好像就是这样吧,你们试试,有问题留言。我这是ok了的。
这个默认的认证,同一浏览器,是不是只能认证登录一个用户???
比如,调用auth::logout,是不是所有用户都会退出,不管是前台,还是后台用户?
Config::set(‘auth.model’, ‘App\Model\admin\admin’);
Config::set(‘auth.table’, ‘admins’); 这两句你写在哪里的?
不要看我这个了,我这个写的不好的,会有冲突,我后来用了下一个第三方的,那个就可以了的。。不要看我这个了。。不好的
第三方是哪个?给个链接啊博主
github,关键字:Ollieread\Multiauth
你这个退出都没做好噢,调用auth::logout方法 岂不是都默认退出了
嗯。确实没弄好。文章写的不对。。不建议参考了