当前位置: 首页 > wzjs >正文

制作网站流程深圳公司网站搭建公司

制作网站流程,深圳公司网站搭建公司,企业网站建设的材料,蓝色phpcms律师网站模板phpcms律师1. 认证框架概述 系统采用 Supabase 作为认证和数据服务提供商,实现了完整的用户身份验证流程。系统使用基于 JWT (JSON Web Token) 的认证方式,提供了安全可靠的用户身份管理机制。 1.1 技术栈 前端: Vue 3 TypeScript状态管理: Pinia认证服务: Sup…

在这里插入图片描述

1. 认证框架概述

系统采用 Supabase 作为认证和数据服务提供商,实现了完整的用户身份验证流程。系统使用基于 JWT (JSON Web Token) 的认证方式,提供了安全可靠的用户身份管理机制。

1.1 技术栈

  • 前端: Vue 3 + TypeScript
  • 状态管理: Pinia
  • 认证服务: Supabase Auth
  • 数据存储: Supabase PostgreSQL

1.2 主要特性

  • 邮箱密码登录
  • 密码重置功能
  • 自动会话管理
  • 角色和权限控制
  • 行级安全策略 (RLS)
  • 安全机制优化(禁用会话持久化)

2. 认证服务实现

2.1 客户端配置

系统通过 src/services/supabase/client.ts 配置 Supabase 客户端,关键配置如下:

export const supabase = createClient<Database>(supabaseUrl, supabaseAnonKey, {auth: {autoRefreshToken: true,persistSession: false, // 设置为false,关闭会话持久化,用户关闭页面后需要重新登录detectSessionInUrl: true}
});

2.2 认证服务接口

src/services/supabase/auth.ts 封装了认证相关的服务接口:

// 用户登录
export const signIn = async (credentials: LoginCredentials) => {...};// 用户注册
export const signUp = async (data: RegisterData) => {...};// 用户登出
export const signOut = async () => {...};// 获取当前用户
export const getCurrentUser = async () => {...};// 获取当前会话
export const getSession = async () => {...};// 重置密码
export const resetPassword = async (email: string) => {...};// 修改密码
export const updatePassword = async (newPassword: string) => {...};

2.3 状态管理

系统使用 Pinia 存储 (src/stores/system/auth.ts) 管理认证状态:

export const useAuthStore = defineStore('auth', () => {// 状态const loading = ref(false);const error = ref<string | null>(null);const userProfile = ref<UserProfile | null>(null);const userRoles = ref<string[]>([]);// 计算属性const isLoggedIn = computed(() => !!userProfile.value);const isAdmin = computed(() => hasRole('admin'));// 方法const initialize = async () => {...};const login = async (credentials: LoginCredentials) => {...};const register = async (data: RegisterData) => {...};const logout = async () => {...};const fetchUserProfile = async () => {...};const hasRole = (role: string) => {...};return { ... };
});

3. 认证流程

3.1 登录流程

  1. 用户在 LoginView.vue 输入邮箱和密码
  2. 调用 authStore.login(credentials) 方法
  3. 登录请求发送到 Supabase Auth 服务
  4. Supabase 验证成功后返回会话和令牌
  5. 通过 onAuthStateChange 事件监听器自动获取用户详细信息
  6. 用户被重定向到首页或之前尝试访问的页面

3.2 用户信息获取

系统采用事件驱动模式获取用户信息,避免重复请求:

// 单一职责原则:集中到事件监听器
supabase.auth.onAuthStateChange(async (event, session) => {if (session) {await fetchUserProfile();} else {userProfile.value = null;userRoles.value = [];}
});

3.3 安全增强措施

最新的系统版本禁用了会话持久化,提高了系统安全性:

  1. persistSession 设置为 false
  2. 用户关闭浏览器后会话信息被清除
  3. 再次访问系统时需要重新登录
  4. 防止未授权用户在合法用户离开后访问系统

4. 行级安全策略 (RLS)

4.1 RLS 机制

系统采用 Supabase 提供的行级安全策略来控制数据访问权限:

-- 角色表安全策略示例
ALTER TABLE public.roles ENABLE ROW LEVEL SECURITY;CREATE POLICY "Authenticated users can view roles"ON public.rolesFOR SELECTTO authenticatedUSING (status = 1);

4.2 RLS 循环依赖问题及解决方案

系统在实现过程中遇到了 RLS 循环依赖问题:

问题描述: 部门表和用户角色表之间的 RLS 策略形成循环引用,导致无限递归

解决方案:

  1. 临时禁用关键表的 RLS:

    ALTER TABLE public.departments DISABLE ROW LEVEL SECURITY;
    ALTER TABLE public.user_roles DISABLE ROW LEVEL SECURITY;
    
  2. 使用 SECURITY DEFINER 模式绕过 RLS 检查:

    CREATE OR REPLACE FUNCTION public.get_current_user_info()
    RETURNS TABLE(...)
    LANGUAGE sql
    SECURITY DEFINER
    AS $function$...
    $function$;
    

5. 密码管理

5.1 修改密码功能

用户可以通过 ChangePassword.vue 组件修改自己的密码:

  1. 输入新密码和确认密码
  2. 系统验证密码复杂度和一致性
  3. 调用 authStore.updatePassword(newPassword) 方法
  4. Supabase Auth API 更新用户密码
  5. 成功后提示用户并可选择登出

5.2 重置密码功能

忘记密码的用户可通过 ResetPasswordView.vue 重置密码:

  1. 输入注册邮箱
  2. 系统发送重置链接到用户邮箱
  3. 用户点击链接后重定向到密码重置页面
  4. 输入并确认新密码
  5. 密码重置成功后重定向到登录页面

6. 未来优化方向

  1. 添加多因素认证 (MFA): 增强系统安全性
  2. 第三方身份提供商集成: 支持通过企业 SSO 登录
  3. 访问令牌生命周期管理: 提供令牌自动过期和刷新机制
  4. 登录尝试限制: 防止暴力破解攻击
  5. 登录活动审计: 记录用户登录历史和异常行为

7. 相关文件

  • 认证客户端: src/services/supabase/client.ts
  • 认证服务: src/services/supabase/auth.ts
  • 状态管理: src/stores/system/auth.ts
  • 登录界面: src/views/system/LoginView.vue
  • 修改密码: src/views/system/ChangePassword.vue
  • 重置密码: src/views/system/ResetPasswordView.vue
  • 数据库迁移: supabase/migrations/20250403093948_create_user_management_system.sql

文档概述了系统的认证机制实现,包括技术架构、核心功能和关键优化。通过 Supabase 认证服务和精心设计的前端架构,系统实现了安全、可靠的用户身份验证,同时通过行级安全策略确保数据访问安全。


文章转载自:

http://JXtIH5aO.wjhnx.cn
http://8YtAg2As.wjhnx.cn
http://qQnGYESI.wjhnx.cn
http://TJZcCbBQ.wjhnx.cn
http://NBbl5iw3.wjhnx.cn
http://7hgk503P.wjhnx.cn
http://ZIDAuNxv.wjhnx.cn
http://V9XHE2vX.wjhnx.cn
http://HQO4qpsu.wjhnx.cn
http://IFAmjWfh.wjhnx.cn
http://MMTUKT7q.wjhnx.cn
http://ihauaqkv.wjhnx.cn
http://zRNRJTpy.wjhnx.cn
http://wN8RxKgg.wjhnx.cn
http://r1dXIlfP.wjhnx.cn
http://ygNiMnsp.wjhnx.cn
http://ZQOIsf3L.wjhnx.cn
http://vAoPtV2E.wjhnx.cn
http://jdqEZo0T.wjhnx.cn
http://frztixZE.wjhnx.cn
http://NvmDtHiH.wjhnx.cn
http://qQ5OEvHv.wjhnx.cn
http://xEPb4EmY.wjhnx.cn
http://SXOnfBsb.wjhnx.cn
http://5Z4ZLarl.wjhnx.cn
http://Ct7Rrwpv.wjhnx.cn
http://PVRwyKw2.wjhnx.cn
http://RoErULhJ.wjhnx.cn
http://kNH0nwh1.wjhnx.cn
http://hDvbbQhD.wjhnx.cn
http://www.dtcms.com/wzjs/646441.html

相关文章:

  • 小公司做网站需要代码html
  • 网站首页设计多少钱郑州网络推广哪家厉害
  • 建立网站最先进的互联网技术有哪些抖音代运营话术
  • pc网站做移动适配做网站jsp和php
  • 谷歌网站建设开发公司起名大全
  • 厦门市建设局查询保障摇号网站首页深圳专业手机网站建设
  • 旅游网站制作内容珠海做网站推广公司
  • 建立一个网站赚钱了手车做网课网站
  • 做苗木的用什么网站cdn wordpress 统计
  • 钓鱼网站教程技术博客wordpress主题
  • 做app的模板下载网站有哪些内容长春电商网站建设
  • 石家庄做网站排名公司在北京注册公司要哪些条件
  • 闵行营销型网站建设公司百度收录需要多久
  • 淘宝客手机网站搭建前端开发可以做网站赚钱吗
  • qt做网站服务器四川建设厅网站招聘
  • 西安 网站建设wordpress小程序收录
  • 南宁网站建设专业品牌软文发布软件
  • 给企业做网站如何定价新手销售怎么和客户交流
  • 公司建设网站价格表上海人才网官网招聘人力资源专业
  • 网站关键字怎么修改足球比赛直播网
  • 郑州高端建站网站建设专业知识应用
  • 成都建站网络营销专业建议
  • 在线解析网站国内新闻最近新闻今天
  • 毕业设计做网站怎样的工作量算达标网站推广朋友圈文案
  • 优秀网站特点Wordpress主题 仿魅族
  • 重庆中色十二冶金建设有限公司网站网上创建公司
  • 网站平台建设是什么什么叫网站集约化建设
  • 绵阳网站建设制作电子商务网站规划书
  • 青海网站建设哪家强自建冷库费用
  • 可登录的网站有哪些政务类网站