From 0d26370a097b94cf8acb7ed4716e9eaf91a13b03 Mon Sep 17 00:00:00 2001 From: yanzai Date: Mon, 30 Jun 2025 23:17:02 +0800 Subject: [PATCH] =?UTF-8?q?cas=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/CAS/CasLoginController.php | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php b/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php index 64fa40f..3ec70f0 100644 --- a/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php +++ b/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php @@ -3,27 +3,45 @@ namespace App\Http\Controllers\API\CAS; use App\Http\Controllers\Controller; +use Illuminate\Database\Schema\Blueprint; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Schema; use JWT; class CasLoginController extends Controller { + public static $request; public static $CasUrl='http://192.168.80.53:8085/cas/serviceValidate'; public function login(Request $request){ $ticket = $request->query('ticket'); $url=env('APP_URL').'/casLogin'; - $response = Http::get(self::$CasUrl, [ - 'service' => $url, + $data = [ 'ticket' => $ticket, - ]); + 'service' => $url, + ]; + self::RequestLog(self::$CasUrl , $data, "cas认证", 'CAS接口'); + $response = Http::get(self::$CasUrl,$data); if (!$response->successful()) { + self::$request->response_data = "请求Roc接口失败"; + self::$request->save(); return \Yz::JsonError("请求CAS失败"); } + // 处理成功的响应 + $res_string = $response->body(); + // dd($res_string); + $str_len = mb_strlen($res_string, 'utf-8'); + $str_size = $str_len / 1024; + $save_res = $res_string; + if ($str_size > 10) $save_res = '{"data":"Row size too large"}'; + self::$request->response_data = $save_res; + self::$request->save(); + + $xml = simplexml_load_string($response->body()); // 注册命名空间 $namespaces = $xml->getNamespaces(true); @@ -64,5 +82,42 @@ class CasLoginController extends Controller + } + + public static function RequestLog($url, $post_data, $mark, $code = 0) + { + self::CheckTableName(); + foreach ($post_data as $key => $post_datum) { + $str_len = mb_strlen(json_encode($post_datum, JSON_UNESCAPED_UNICODE), 'utf-8'); + $str_size = $str_len / 1024; + if ($str_size > 10) { + $post_data["$key"] = 'Row size too large'; + } + } + $post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE); + self::$request->code = $code; + self::$request->mark = $mark; + self::$request->post_data = $post_data == '[]' ? '{}' : $post_data; + self::$request->request_url = $url; + self::$request->save(); + } + + public static function CheckTableName() + { + $table_name = 'zz_peis_log_' . date('ym'); + $table_count = DB::select('select count(1) as c from information_schema.TABLES where table_schema = ? and table_name = ?', [env('DB_DATABASE'), $table_name])[0]; + if ($table_count->c === 0) { + Schema::create($table_name, function (Blueprint $table) { + $table->id(); + $table->string('code', 50)->index(); + $table->string('mark', 50)->index(); + $table->text('post_data'); + $table->text('response_data')->nullable(); + $table->string('request_url', 2000); + $table->timestamps(); + }); + } + self::$request = new \App\Models\PEISLog(); + self::$request->setTable($table_name); } }