认证默认使用数据库。当然,你可以重写下面的模型,改变认证方式。此处我们使用数据库作为例子。
在/config/auth.php文件中可以配置认证的相关信息。
<?php
return array(
'model' => 'App\\Frontend\\Models\\User', //模型名称
'table' => 'w_users', //表名称,可以不填
/**
* token name in cookie 在cookie中的令牌名称
*/
'token_name' => 'wudimei_tk',
/**
* token lifetime,in seconds.令牌生存时间,单位秒,0表时在浏览器关闭时结束
*/
'lifetime' => 0,
/**
* token's cookie path ,cookie的路径
*/
'path' => '/',
/**
* token's cookie domain,cookie的域名
*/
'domain' => null,
/**
* token's cookie secure,是不支持https
*/
'secure' => false,
'httponly' => false,
);
<?php
//文件\app\Frontend\Models\User.php
namespace App\Frontend\Models;
class User extends \Wudimei\Auth\User{
public $table = "users"; //表名称,没有前缀w_
public $connection = "default"; //连接名称为默认,在config/database.php中可以看到
}
这里我给出了MySQL/MariaDB的表创建脚本。字段password是用md5()加密码的,要修改加密方式请在App\Frontend\Models\User中重写“public function encryptPassword( $password )”方法,返回加密过的字符串。
CREATE TABLE `w_users` (
`id` int(11) NOT NULL,
`username` varchar(30) DEFAULT ' ',
`email` varchar(50) DEFAULT ' ',
`password` varchar(60) DEFAULT ' ',
`role_id` int(4) NOT NULL DEFAULT '1',
`created_at` datetime NOT NULL,
`remember_token` varchar(62) NOT NULL DEFAULT ' '
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在命名空间中,您需要代码文件顶部加入一行:
use Auth;
判断用户是否登录:
<?php
if( Auth::check() ){
echo "您已经登录!";
}
取得登录用户的信息:
<?php
$user = \Auth::user();
echo $user->username; //username是w_users的字段
尝试登录。第一个参数为用户名、密码等校验信息。第二个参数表示是否要记住登录。
<?php
$b = Auth::attempt(['username'=>'yqr','role_id'=>1,'password'=>'123456'], true );
var_dump( $b );
当然,你可以只用两个字段,或者更多字段去校验。
<?php
$b = Auth::attempt(['username'=>'yqr','password'=>'123456'], true );
var_dump( $b );
如果你想在cookie中记住登录,可以设置要记住的秒数。
<?php
Auth::setTokenLifeTime(3600*24*7);//7 days 七天秒数=3600秒*24小时*7天
$b = Auth::attempt(['username'=>'yqr','role_id'=>1,'password'=>'123456'], true );
var_dump( $b );
退出登录:
<?php
\Auth::logout();