UNPKG

jv3-login-jwt

Version:

easy login from assign by route by cdnagroup using vuetify

121 lines (102 loc) 5.18 kB
# JV3LoginJwt: ปลั๊กอิน Vue 3 SSO อย่างง่าย **JV3LoginJwt** เป็นปลั๊กอินสำหรับ Vue 3 ที่ช่วยให้คุณสามารถเพิ่มระบบล็อกอินแบบ Single Sign-On (SSO) ให้กับแอปพลิเคชันของคุณได้อย่างง่ายดาย โดยอาศัยกลไก JSON Web Token (JWT) ในการจัดการสถานะการล็อกอินของผู้ใช้ ## คุณสมบัติหลัก * **การผสานรวมที่ราบรื่น:** ออกแบบมาเพื่อทำงานร่วมกับ Vue Router อย่างลงตัว * **รองรับ JWT:** ใช้มาตรฐานอุตสาหกรรมสำหรับการพิสูจน์ตัวตนและการให้สิทธิ์ * **การกำหนดค่าที่ยืดหยุ่น:** ปรับแต่ง URL การล็อกอิน, รีเฟรชโทเค็น, ข้อมูลผู้ใช้ และออกจากระบบได้ * **การจัดการโทเค็นอัตโนมัติ:** จัดการการจัดเก็บและรีเฟรชโทเค็น JWT โดยอัตโนมัติ * **การจัดการสิทธิ์การเข้าถึง:** กำหนดค่าเส้นทางที่ต้องการการล็อกอินผ่าน `meta` ของ Route * **ส่วนต่อประสานผู้ใช้ที่กำหนดเอง:** ปรับแต่งหน้าจอการล็อกอินและข้อความต้อนรับได้ * **การจัดการข้อผิดพลาด:** มีกลไกในการจัดการข้อผิดพลาดที่อาจเกิดขึ้น * **การขยายความสามารถ:** รองรับการล็อกอินแบบกำหนดเองและ Callback หลังการล็อกอิน/ออกจากระบบ ## วิธีการใช้งานเบื้องต้น 1. **ติดตั้งปลั๊กอิน:** ```bash npm install jv3-login-jwt # หรือ yarn add jv3-login-jwt ``` 2. **นำเข้าและใช้งานใน `main.ts`:** ```typescript import { createApp } from "vue"; import { createRouter, createWebHistory } from "vue-router"; import App from "./App.vue"; import HomeView from "./views/HomeView.vue"; // ... imports อื่นๆ import JV3LoginJwt from "./jv3-login-jwt"; import vuetify from "./plugins/vuetify"; import DefaultLayout from "./layouts/DefaultLayout.vue"; // ... กำหนด routes และ router const authConfig = { authUrl: "/auth/token", refreshUrl: "/auth/refresh", userUrl: "/auth/me", logoutUrl: "/auth/logout", exceptions: [], jwtStorage: "jwt", authStorage: "jauth", defaultRoutePath: "/", defaultTokenExprie: 3600, tokenExprieBefore: 600, title: "Sigin", hello: "Hello นี้คือระบบล็อกอิน แบบง่าย", customRouteMeta: { noLayout: true, }, }; const app = createApp(App); app.use(vuetify); app.use(JV3LoginJwt, router, authConfig); // เพิ่มปลั๊กอิน JV3LoginJwt พร้อม router และ config app.use(router); router.isReady().then(() => { app.mount('#app'); }); ``` 3. **การใช้งานใน `jauth` ใน `component` ของ Route:** ```typescript <setup lang="ts" setup> ... const jauth = useAccount() const router = useRouter() function logout() { jauth.logout(); // ตัวอย่างการ Logout } // ตัวอย่างการ รับ user const user = computed(()=>{ return jauth.user }) ... ``` ## Interface ที่เกี่ยวข้อง ```typescript import { Router, RouteRecordRaw } from "vue-router"; export interface IJAuthHeader { Authorization?: String; [key: string]: String | undefined; } export interface IJAuthUser { username: string; password: string; [key: string]: string; } export interface IJAuthConfig { url: string; path_login: string; path_refresh: string; path_user: string; customLogin?: Function; callbackLogin?: Function; customLogout?: Function; callbackLogout?: Function; exceptions?: Array<any>; jwtStorage: string; defaultTokenExprie?: number; tokenExprieBefore?: number; authStorage: string; defaultRoutePath?: string; handleError?: Function; title?: string; hello?: string; customRouteMeta?: object; loginRouterView?: RouteRecordRaw | undefined | null | any; }