bjchy-auth-sdk
Version:
朝阳区认证SDK - 简洁易用的扫码登录和请求工具包
257 lines (185 loc) • 5.45 kB
Markdown
git add . && git commit -m "你的提交信息" && git push origin master
npm run release:patch
npm run release:minor
npm run release:major
🔐 **朝阳区认证SDK** - 简洁、易用的扫码登录和请求工具包
- **扫码登录** - 完整的微信扫码登录流程
- **请求工具** - 自动处理token和街道信息的HTTP请求
- **动态街道** - 自动从URL检测街道信息
- **CORS处理** - 自动处理localhost开发环境跨域问题
```bash
npm install bjchy-auth-sdk
```
```vue
<template>
<div class="login-page">
<QrCodeLogin
street-key="blz"
title="朝阳区管理系统"
@login-success="handleLoginSuccess"
@login-error="handleLoginError"
/>
</div>
</template>
<script setup>
import { QrCodeLogin } from 'bjchy-auth-sdk'
import { useRouter } from 'vue-router'
const router = useRouter()
const handleLoginSuccess = (userData) => {
console.log('登录成功:', userData)
// token已自动保存到localStorage
router.push('/dashboard')
}
const handleLoginError = (error) => {
console.error('登录失败:', error)
}
</script>
```
```javascript
import { request } from 'bjchy-auth-sdk'
// 自动附带token和街道信息的请求
const getUserData = async () => {
try {
const response = await request.get('/api/user/info')
console.log('用户信息:', response)
} catch (error) {
console.error('请求失败:', error)
}
}
// POST请求
const saveData = async (data) => {
try {
const response = await request.post('/api/data', data)
console.log('保存成功:', response)
} catch (error) {
console.error('保存失败:', error)
}
}
```
```javascript
import { detectStreetKey, setCurrentStreet } from 'bjchy-auth-sdk'
// 自动从URL检测街道
const streetKey = detectStreetKey()
console.log('当前街道:', streetKey) // 'blz', 'yyc', 'hjl' 或 null
// 手动设置街道
setCurrentStreet('blz')
```
```javascript
// main.js
import { createApp } from 'vue'
import BjchyAuth from 'bjchy-auth-sdk'
import App from './App.vue'
const app = createApp(App)
app.use(BjchyAuth, {
baseURL: 'https://your-api-domain.com/webapi',
streetKey: 'blz'
})
app.mount('#app')
```
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| streetKey | String | 自动检测 | 街道标识:'blz', 'yyc', 'hjl' |
| title | String | '朝阳区认证系统' | 登录页标题 |
| subtitle | String | '请使用微信扫码登录' | 登录页副标题 |
| 事件名 | 参数 | 说明 |
|--------|------|------|
| login-success | `{ token, userInfo, ... }` | 登录成功,token已自动保存 |
| login-error | `{ type, error }` | 登录失败 |
| status-change | `{ status }` | 状态变化:'generated', 'scanned', 'expired' |
```javascript
import { request, createRequest } from 'bjchy-auth-sdk'
// 使用默认实例
await request.get('/api/path')
await request.post('/api/path', data)
await request.put('/api/path', data)
await request.delete('/api/path')
// 创建自定义实例
const customRequest = createRequest({
baseURL: 'https://custom-api.com',
timeout: 15000
})
```
```javascript
import { detectStreetKey, getStreetConfig, setCurrentStreet } from 'bjchy-auth-sdk'
// 检测街道(从URL、localStorage等)
const streetKey = detectStreetKey()
// 获取街道信息
const streetInfo = getStreetConfig('blz')
// { key: 'blz', name: '八里庄街道' }
// 设置当前街道
setCurrentStreet('blz')
```
支持的街道:
- `blz` - 八里庄街道
- `yyc` - 亚运村街道
- `hjl` - 呼家楼街道
街道自动检测顺序:
1. URL参数:`?street=blz`
2. URL路径:`/blz/login`
3. 域名:`blz.example.com`
4. localStorage缓存
在localhost开发环境下,SDK会自动:
- 使用生产API地址避免跨域
- 设置正确的CORS头部
- 禁用credentials避免预检请求
```bash
npm install
npm test
npm run build
```
```javascript
import { createRequest } from 'bjchy-auth-sdk'
const customRequest = createRequest({
baseURL: 'https://your-api.com/webapi',
timeout: 10000,
tokenKey: 'custom_token_key'
})
```
```javascript
// 监听token过期事件
window.addEventListener('bjchy-token-expired', (event) => {
console.log('Token已过期:', event.detail)
// 跳转到登录页
window.location.href = '/login'
})
```
- 🎯 **简化架构** - 移除复杂的状态管理,专注核心功能
- 🔧 **修复CORS** - 自动处理localhost开发环境跨域问题
- ⚡ **动态街道** - 智能检测URL中的街道信息
- 📦 **体积优化** - 减少70%的包体积
- 🛠️ **易用性** - 简化API,开箱即用
MIT License
欢迎提交 Issue 和 Pull Request!
- [@wangzhongsheng](https://github.com/wangzhongsheng)
---
**朝阳区认证SDK** - 让登录变得简单 🚀