在Ubuntu上使用ThinkPHP框架实现用户认证,可以遵循以下步骤:
composer create-project topthink/think tp
这将在当前目录下创建一个名为tp的新项目。
application目录下创建一个名为model的文件夹,并在其中创建一个名为User.php的文件。在这个文件中,定义一个名为User的模型类,继承自think\Model。例如:<?php
namespace app\model;
use think\Model;
class User extends Model
{
// 用户认证相关的方法和属性
}
CREATE TABLE `users` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL DEFAULT '',
`password` varchar(255) NOT NULL DEFAULT '',
`email` varchar(255) DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT '0',
`create_time` int(11) UNSIGNED NOT NULL DEFAULT '0',
`update_time` int(11) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
User模型中,添加一个名为authenticate的方法,用于验证用户提供的用户名和密码是否正确。例如:public function authenticate($username, $password)
{
$user = $this->where('username', $username)->find();
if ($user && password_verify($password, $user->password)) {
return $user;
} else {
return false;
}
}
application目录下创建一个名为controller的文件夹,并在其中创建一个名为AuthController.php的文件。在这个文件中,定义一个名为AuthController的控制器类,包含用户登录和注册的相关方法。例如:<?php
namespace app\controller;
use think\Controller;
use app\model\User;
use think\Request;
class AuthController extends Controller
{
public function login(Request $request)
{
if ($request->isPost()) {
$username = $request->post('username');
$password = $request->post('password');
$user = User::authenticate($username, $password);
if ($user) {
// 用户认证成功,设置session
session('user_id', $user->id);
return json(['status' => 'success', 'message' => '登录成功']);
} else {
return json(['status' => 'error', 'message' => '用户名或密码错误']);
}
}
return $this->fetch();
}
public function register(Request $request)
{
if ($request->isPost()) {
$username = $request->post('username');
$password = $request->post('password');
$email = $request->post('email');
$user = new User();
$user->username = $username;
$user->password = password_hash($password, PASSWORD_DEFAULT);
$user->email = $email;
$user->save();
return json(['status' => 'success', 'message' => '注册成功']);
}
return $this->fetch();
}
}
application目录下的route.php文件中,定义用户认证相关的路由。例如:<?php
use think\Route;
Route::get('login', 'AuthController@login');
Route::post('login', 'AuthController@login');
Route::get('register', 'AuthController@register');
Route::post('register', 'AuthController@register');
现在,你可以在浏览器中访问http://your-domain.com/login和http://your-domain.com/register来测试用户登录和注册功能。