更改pacs字段,cas登录
parent
f39e655478
commit
9df8d2fc18
@ -0,0 +1 @@
|
||||
/Laravel/public/admin
|
||||
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\CAS;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use JWT;
|
||||
|
||||
|
||||
class CasLoginController extends Controller
|
||||
{
|
||||
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,
|
||||
'ticket' => $ticket,
|
||||
]);
|
||||
|
||||
if (!$response->successful()) {
|
||||
return \Yz::JsonError("请求CAS失败");
|
||||
}
|
||||
|
||||
$xml = simplexml_load_string($response->body());
|
||||
// 注册命名空间
|
||||
$namespaces = $xml->getNamespaces(true);
|
||||
|
||||
// 获取 cas 命名空间下的元素
|
||||
$cas = $xml->children($namespaces['cas']);
|
||||
|
||||
if ($cas === false) {
|
||||
return \Yz::JsonError("解析CAS响应失败");
|
||||
}
|
||||
|
||||
|
||||
if (isset($cas->authenticationFailure)) {
|
||||
return \Yz::JsonError("认证失败");
|
||||
}
|
||||
|
||||
$casResponse = $cas->authenticationSuccess;
|
||||
|
||||
if (!$casResponse) {
|
||||
return \Yz::JsonError("认证失败");
|
||||
}
|
||||
|
||||
$res_user = (string)$casResponse->user;
|
||||
|
||||
$user=DB::table('users')->where(['cas_code'=>$res_user,'status'=>1])->first();
|
||||
if(!!$user){
|
||||
$jwt= new JWT();
|
||||
$accessTimeout = $jwt -> GetGetSecretTimeOut();
|
||||
$refreshTimeout = $jwt -> GetRefreshTokenTimeOut();
|
||||
$access_token = $jwt->BuildJWT('yz','access',$user->id,$user->group,$accessTimeout);
|
||||
$refresh_token = $jwt->BuildJWT('yz','refresh',$user->id,'',$refreshTimeout);
|
||||
DB::table('users')->where(['id'=>$user->id,'status'=>1])->update(['token'=>md5($refresh_token)]);
|
||||
return redirect(env('APP_URL')."/admin/#/caslogin?access_token=".$access_token."&refresh_token=".$refresh_token);
|
||||
}else{
|
||||
echo "登录失败,未授权或者已注销";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<view>
|
||||
cas登录
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
Login
|
||||
} from "@/api/api.js";
|
||||
import {
|
||||
ElMessage
|
||||
} from 'element-plus'
|
||||
import {
|
||||
ref,nextTick,onMounted
|
||||
} from 'vue'
|
||||
onMounted(()=>{
|
||||
let access_token=getParameterByName('access_token')
|
||||
let refresh_token=getParameterByName('refresh_token')
|
||||
sessionStorage.setItem('token', access_token);
|
||||
sessionStorage.setItem('refreshToken', refresh_token);
|
||||
// sessionStorage.setItem('tk', JSON.stringify(res.data.tk));
|
||||
var token = sessionStorage.getItem('token');
|
||||
console.log(token)
|
||||
if (token!=null && token == access_token) {
|
||||
window.location.href = "./#/yewu/mainList"
|
||||
}else{
|
||||
ElMessage.error("登录失败")
|
||||
}
|
||||
})
|
||||
//获取url参数
|
||||
function getParameterByName(name, url) {
|
||||
if (!url) url = decodeURIComponent(window.location.href)
|
||||
name = name.replace(/[\[\]]/g, '\\$&')
|
||||
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
|
||||
results = regex.exec(url)
|
||||
if (!results) return null
|
||||
if (!results[2]) return ''
|
||||
return decodeURIComponent(results[2].replace(/\+/g, ' '))
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
Loading…
Reference in New Issue