diff --git a/src/AppLayout.tsx b/src/AppLayout.tsx
index 99765e6..ba15c74 100644
--- a/src/AppLayout.tsx
+++ b/src/AppLayout.tsx
@@ -1,26 +1,43 @@
+// src/AppLayout.tsx
+
+import React, { useEffect, useMemo } from 'react';
 import { Outlet, useLocation, useNavigate } from 'react-router';
-import { Layout, Menu, Dropdown, Button, Flex } from 'antd';
-import { HomeOutlined, AppstoreOutlined, DownOutlined } from '@ant-design/icons';
-import { useEffect, useMemo } from 'react';
+import { Layout, Menu, Dropdown, Button, Flex, Space } from 'antd';
+import {
+    HomeOutlined,
+    AppstoreOutlined,
+    DownOutlined,
+    UserOutlined,
+    SettingOutlined,
+    LogoutOutlined
+} from '@ant-design/icons';
 import logo from "./assets/logo.png";
 import { useAppDispatch, useAppSelector } from './store/hooks';
 import { getUserInfo } from './feature/user/userSlice';
 import { logout } from './feature/auth/authSlice';
-const { Header } = Layout;
 
-const AppLayout = () => {
+const { Header, Content, Footer } = Layout;
+
+const AppLayout: React.FC = () => {
     const location = useLocation();
     const navigate = useNavigate();
-    const userState = useAppSelector(state => state.user);
     const dispatch = useAppDispatch();
 
-    useEffect(() => {
-        dispatch(getUserInfo())
-    }, [dispatch])
+    // Redux状态
+    const { isAuth } = useAppSelector(state => state.auth);
+    const userState = useAppSelector(state => state.user);
 
-    // 判断是否在登录、注册或找回密码页面
+    // 获取用户信息
+    useEffect(() => {
+        if (isAuth) {
+            dispatch(getUserInfo());
+        }
+    }, [dispatch, isAuth]);
+
+    // 判断是否在认证页面
     const isAuthPage = useMemo(() => {
-        return ['/login', '/register', '/forget'].includes(location.pathname);
+        const authPaths = ['/login', '/register', '/forget'];
+        return authPaths.includes(location.pathname);
     }, [location.pathname]);
 
     // 导航项配置
@@ -32,17 +49,24 @@
             path: '/',
         },
         {
-            key: 'tasks',
-            label: '任务清单',
+            key: 'works',
+            label: '作品',
             icon: <AppstoreOutlined />,
-            path: '/tasks',
+            path: '/works',
         },
     ];
 
+    // 获取当前选中的菜单项
+    const selectedKey = useMemo(() => {
+        if (location.pathname === '/') return 'home';
+        if (location.pathname.startsWith('/works')) return 'works';
+        return '';
+    }, [location.pathname]);
+
     // 处理登出逻辑
     const handleLogout = () => {
-        dispatch(logout())
-        navigate('/login');  // 重定向到登录页
+        dispatch(logout());
+        navigate('/login', { replace: true });
     };
 
     // 下拉菜单内容
@@ -50,66 +74,137 @@
         {
             key: 'profile',
             label: '个人中心',
+            icon: <UserOutlined />,
             onClick: () => navigate('/profile'),
         },
         {
+            key: 'settings',
+            label: '设置',
+            icon: <SettingOutlined />,
+            onClick: () => navigate('/settings'),
+        },
+        {
+            type: 'divider' as const,
+        },
+        {
             key: 'logout',
             label: '登出',
+            icon: <LogoutOutlined />,
             onClick: handleLogout,
+            danger: true,
         },
     ];
 
+    // 处理菜单点击
+    const handleMenuClick = (path: string) => {
+        navigate(path);
+    };
+
     return (
         <Layout style={{ minHeight: '100vh', width: '100%' }}>
-            <Header className="header" style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
-                {/* logo */}
-                <Flex justify='center' align='center'>
-                    <img src={logo} alt="Logo" height='48px' />
-                    <div style={{ color: 'white', marginLeft: '10px' }}>
+            <Header
+                style={{
+                    display: 'flex',
+                    alignItems: 'center',
+                    justifyContent: 'space-between',
+                    padding: '0 24px',
+                    background: '#001529'
+                }}
+            >
+                {/* Logo区域 */}
+                <Flex
+                    align="center"
+                    style={{ cursor: 'pointer' }}
+                    onClick={() => navigate('/')}
+                >
+                    <img
+                        src={logo}
+                        alt="创驿Logo"
+                        style={{ height: 48 }}
+                    />
+                    <div style={{
+                        color: 'white',
+                        marginLeft: 12,
+                        fontSize: 18,
+                        fontWeight: 'bold'
+                    }}>
                         创驿
                     </div>
                 </Flex>
 
-                <div style={{
-                    height: '30px',
-                    width: '1px',
-                    backgroundColor: 'white',
-                    margin: '0 20px',
-                }}></div>
-
-                {/* 中间导航菜单 */}
-                <Menu
-                    mode="horizontal"
-                    theme="dark"
-                    selectedKeys={[location.pathname === '/' ? 'home' : location.pathname.slice(1)]}
-                    items={menuItems.map(item => ({
-                        ...item,
-                        onClick: () => navigate(item.path),
-                    }))}
-                    style={{ flex: 1 }}
-                />
-
-                {/* 右侧用户名和下拉菜单 */}
+                {/* 分割线 */}
                 {!isAuthPage && (
-                    <div style={{ display: 'flex', alignItems: 'center', color: 'white' }}>
-                        <span>{userState.username}</span>
+                    <div style={{
+                        height: 30,
+                        width: 1,
+                        backgroundColor: 'rgba(255, 255, 255, 0.3)',
+                        margin: '0 20px',
+                    }} />
+                )}
+
+                {/* 导航菜单 */}
+                {!isAuthPage && (
+                    <Menu
+                        mode="horizontal"
+                        theme="dark"
+                        selectedKeys={selectedKey ? [selectedKey] : []}
+                        items={menuItems.map(item => ({
+                            ...item,
+                            onClick: () => handleMenuClick(item.path),
+                        }))}
+                        style={{
+                            flex: 1,
+                            minWidth: 0,
+                            backgroundColor: 'transparent',
+                            borderBottom: 'none'
+                        }}
+                    />
+                )}
+
+                {/* 用户信息区域 */}
+                {!isAuthPage && isAuth && (
+                    <Space size="middle">
+                        <span style={{ color: 'white' }}>
+                            欢迎，{userState.username || '用户'}
+                        </span>
                         <Dropdown
-                            trigger={['click']}
                             menu={{ items: dropdownMenuItems }}
+                            trigger={['click']}
+                            placement="bottomRight"
                         >
-                            <Button type="text" icon={<DownOutlined />} style={{ marginLeft: '10px', color: 'white' }} />
+                            <Button
+                                type="text"
+                                style={{
+                                    color: 'white',
+                                    display: 'flex',
+                                    alignItems: 'center'
+                                }}
+                            >
+                                <DownOutlined />
+                            </Button>
                         </Dropdown>
-                    </div>
+                    </Space>
                 )}
             </Header>
-            <Layout.Content style={{ padding: '24px' }}>
+
+            <Content style={{
+                padding: isAuthPage ? 0 : 24,
+                minHeight: 'calc(100vh - 64px - 70px)' // 减去header和footer高度
+            }}>
                 <Outlet />
-            </Layout.Content>
-            <Layout.Footer style={{ textAlign: 'center' }}>
-                © 2025 创驿 - 愿做你创作路上的同行者
-            </Layout.Footer>
+            </Content>
+
+            {!isAuthPage && (
+                <Footer style={{
+                    textAlign: 'center',
+                    background: '#f0f2f5',
+                    padding: '24px 50px'
+                }}>
+                    © 2025 创驿 - 愿做你创作路上的同行者
+                </Footer>
+            )}
         </Layout>
     );
 };
 
-export default AppLayout;
+export default AppLayout;
\ No newline at end of file
