登录相关路由设置
Route::rule('/admin/login', 'admin/LoginController/login');
Route::rule('/yzm', 'admin/LoginController/verify');
Route::rule('/admin/dologin', 'admin/LoginController/doLogin');
1.创建后台登录控制器
php think make:controller admin/LoginController
2.登录表单
//获取登录表单
public function login()
{
return view('login/login');
}
3.表单页面
View/login/login.html 修改表单 准备验证码
//生成验证码图片
public function verify()
{
$captcha = new Captcha();
$captcha -> imageH = 35;
$captcha -> imageW = 120;
$captcha -> length = 4;
$captcha -> fontSize = 18;
$captcha -> useCurve = false;
return $captcha->entry();
}
<form action="/admin/dologin" method="post">
<ul class="admin_items">
<li>
<label for="user">用户名:</label>
<input type="text" name="username" value="" id="user" size="40" class="admin_input_style" />
</li>
<li>
<label for="pwd">密码:</label>
<input type="password" name="password" value="" id="pwd" size="40" class="admin_input_style" />
</li>
<li>
<label for="pwd">验证码:</label>
<input type="text" name="yzm" value="" id="pwd" size="15" class="admin_input_style" /><img src="/yzm" onclick="this.src='/yzm/?id='+Math.random();">
</li>
<li>
<input type="submit" tabindex="3" value="提交" class="btn btn-primary" />
</li>
</ul>
</form>
4.进行登录验证
public function doLogin(Request $request)
{
$code = $request -> post('yzm');
$captcha = new Captcha();
//验证码验证
if (!$captcha -> check($code)) {
$this -> error('验证码错误, 请重新输入', '/admin/login');
}
//验证用户名 密码
//接收
$uname = $request -> post('username');
$upass = md5($request -> post('password'));
//dump($upass);
$user = User::where('username','=',$uname) -> where('password', '=', $upass) -> find();
if ($user) {
if ($user['qx'] == 1) {
//登录成功后 将用户信息保存在session中 方便访问
session('adminUserInfo', $user);
session('adminFlag', true);
$this -> success('登录成功', '/admin');
} else {
$this -> error('没有权限登录', '/admin/login');
}
} else {
$this -> error('账号或密码不对', '/admin/login');
}
}
5.模板显示
管理员:{:session(adminUserInfon.username')}
6.用户退出
public function logout()
{
session('adminFlag', false);
$this -> success('退出成功', '/admin/login');
}
7.在后台模块使用登录验证
public function __construct()
{
if (empty(session('adminFlag'))) {
$this -> error('请先登录', '/admin/login');
}
}
8.也可以使用 行为 路由参数
后置行为执行
V5.1.6+版本开始建议使用中间件替代路由后置行为。
可以为某个路由或者某个分组路由定义后置行为执行,表示当路由匹配成功后,执行的行为,例如:
Route::get('user/:id', 'User/read')
->after(['\app\admin\behavior\类名']);
<?php
namespace app\admin\behavior;
use think\Controller;
class CheckLogin extends Controller
{
public function run()
{
echo 'aaaaaaa';
}
}
//测试
Route::rule('/test', function(){
(new app\admin\behavior\CheckLogin) -> run();
});
用户操作路由 也可以使用路由组的方式写 方便加登录验证
Route::rule('/user/create', 'admin/UserController/create');
Route::rule('/user/save', 'admin/UserController/save');
Route::rule('/user/index', 'admin/UserController/index');
Route::rule('/user/delete/:id', 'admin/UserController/delete');
Route::rule('/user/edit/:id', 'admin/UserController/edit');
Route::rule('/user/update/:uid', 'admin/UserController/update');
路由组
Route::group(['name' => 'user', 'prefix' => 'admin/UserController/'],function(){
Route::rule('create', 'create', 'get');
Route::rule('save', 'save');
Route::rule('index', 'index');
Route::rule('delete/:id', 'delete');
Route::rule('edit/:id', 'edit');
Route::rule('update/:uid', 'update');
});
Route::group(['name' => 'user', 'prefix' => 'admin/UserController/'],function(){
Route::rule('create', 'create', 'get');
Route::rule('save', 'save');
Route::rule('index', 'index');
Route::rule('delete/:id', 'delete');
Route::rule('edit/:id', 'edit');
Route::rule('update/:uid', 'update');
}) -> after(['\app\admin\behavior\CheckLogin']);