Explorar el Código

added "remember_me" field.
现在的"记住我"功能能够使用了.

leo hace 8 años
padre
commit
0beb318fbd

+ 24 - 6
app/Http/Controllers/LoginController.php

@@ -31,7 +31,6 @@ class LoginController extends Controller
             $username = trim($request->get('username'));
             $password = trim($request->get('password'));
             $captcha = trim($request->get('captcha'));
-
             if (empty($username) || empty($password)) {
                 $request->session()->flash('errorMsg', '请输入用户名和密码');
 
@@ -61,9 +60,17 @@ class LoginController extends Controller
 
                 return Redirect::back()->withInput();
             }
+            if($request->remember){
+                $rememberme_token = $this->makeRandStr(20);
+                // 更新登录信息
+                User::query()->where('id', $user->id)->update(['last_login' => time(),"rememberme_token"=>$rememberme_token]);
+
+            }else{
+                $rememberme_token = "";
+                // 更新登录信息
+                User::query()->where('id', $user->id)->update(['last_login' => time()]);
+            }
 
-            // 更新登录信息
-            User::query()->where('id', $user->id)->update(['last_login' => time()]);
 
             // 登录送积分
             if (self::$config['login_add_score']) {
@@ -94,11 +101,22 @@ class LoginController extends Controller
 
             // 根据权限跳转
             if ($user->is_admin) {
-                return Redirect::to('admin');
+                return Redirect::to('admin')->cookie('remember',$rememberme_token,36000);
             }
 
-            return Redirect::to('user');
+            return Redirect::to('user')->cookie('remember',$rememberme_token,36000);
         } else {
+            $request->session()->flush();
+            if($request->cookie("remember")){
+                $u = User::where("rememberme_token",$request->cookie("remember"))->first();
+                if($u){
+                    $request->session()->put('user', $u->toArray());
+                    if ($u->is_admin) {
+                        return Redirect::to('admin');
+                    }
+                    return Redirect::to('user');
+                }
+            }
             $view['is_captcha'] = self::$config['is_captcha'];
             $view['is_register'] = self::$config['is_register'];
 
@@ -111,7 +129,7 @@ class LoginController extends Controller
     {
         $request->session()->flush();
 
-        return Redirect::to('login');
+        return Redirect::to('login')->cookie('remember',"",36000);;
     }
 
 }

+ 9 - 1
app/Http/Middleware/User.php

@@ -4,7 +4,7 @@ namespace App\Http\Middleware;
 
 use Closure;
 use Redirect;
-
+use App\Http\Models\User as U;
 class User
 {
     /**
@@ -16,7 +16,15 @@ class User
      */
     public function handle($request, Closure $next)
     {
+        
         if (!$request->session()->has('user')) {
+            if($request->cookie("remember")){
+                $u = U::where("rememberme_token",$request->cookie("remember"))->first();
+                if($u){
+                    $request->session()->put('user', $u->toArray());
+                    return $next($request);
+                }
+            }
             return Redirect::to('login');
         }
 

+ 3 - 0
sql/db.sql

@@ -767,6 +767,9 @@ INSERT INTO `config` (`id`, `name`, `value`) VALUES (NULL, 'payment_qqpay_phone'
 CREATE TABLE `ssrpanel`.`user_payment` ( `id` INT NOT NULL AUTO_INCREMENT , `user_id` INT NOT NULL , `money` FLOAT NOT NULL , `status` INT NOT NULL , PRIMARY KEY (`id`),  `created_at` datetime NOT NULL,
   `updated_at` datetime NOT NULL) ENGINE = InnoDB;
 
+
+ALTER TABLE `user` ADD `rememberme_token` VARCHAR(256) NULL DEFAULT '' AFTER `passwd`;
+
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

+ 1 - 0
sql/update/20171130.sql

@@ -0,0 +1 @@
+ALTER TABLE `user` ADD `rememberme_token` VARCHAR(256) NULL DEFAULT '' AFTER `passwd`;