目录 wudimei-php是一个MIT许可的自由php框架。由杨庆荣开发维护,wudimei.com , QQ290359552

认证

认证默认使用数据库。当然,你可以重写下面的模型,改变认证方式。此处我们使用数据库作为例子。

在/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();