Ant design pro使用(五):未登入時自動跳轉到登入頁,登入之後不再返回登入頁
判斷是否登入,要在routes中配置 SecurityLayout
config/config.ts
routes:[
{
path:'/user',
layout: false,
routes:[
{path:'/user',redirect:'/user/login'},
{
path:'/user/login',
name:'登入',
component:'./User/Login'
},
{
path:'/user/design',
name:'註冊',
component:'./User/Design'
},
{
path:'/user/forget',
name:'忘記密碼',
component:'./User/Forget'
},
{
component:'./Empty'
}
]
},
{
path:'/',
component: '../layouts/SecurityLayout', //******關鍵在這裡
routes:[
{
path:'/',
component:'../layouts/BasicLayout',
// authority:['admin','user'],//設定許可權
routes:[
{path:'/',redirect:'/equipment/mall'},
{
path:'/equipment',
name:'裝置管理',
icon:'videoCamera',
routes:[
{path:'equipment/mall',name:'裝置商城',component:'./Equipment/Mall'},
{path:'/equipment/cpe',name:'CPE裝置列表',component: './Equipment/Cpe'},
{path:'/equipment/camera',name:'攝像頭列表',component:'./Equipment/Camera'}
]
},
{path:'/repair',name:'裝置報修',icon:'tool',component:'./Repair'},
{path:'/test',name:'測試模組',icon:'tool',component:'./Test'},
]
}
]
},
]
在SecurityLayout元件中進行邏輯判斷
- 在componentDidMount()中
import {getSeesion,getUserId} from '@/utils/memory'
componentDidMount(){
this.setState({
isReady:true
})
if(getSeesion() && getUserId()){
//如果session 和 id存在,
const {dispatch} = this.props;
dispatch({type: 'user/fetchCurrent'});//呼叫介面,獲取使用者資訊
}
}
2.在render中進行邏輯判斷修改
render() {
const { isReady } = this.state;
const { children, loading } = this.props;
// You can replace it to your authentication rule (such as check token exists)
// 你可以把它替換成你自己的登入認證規則(比如判斷 token 是否存在)
const isLogin = getSession() && getUserID();
const queryString = stringify({
redirect: window.location.href,
});
if ((!isLogin && loading) || !isReady) {
return <PageLoading />;
}
if (!isLogin && window.location.pathname !== '/user/login') {
return <Redirect to={`/user/login?${queryString}`} />;
}
return children;
}
3.BasicLayout中將傳送獲取介面的事件註釋,不然會呼叫2次
BasicLayout要註釋的地方
// useEffect(() => {
// console.log('101')
// if (dispatch) {
// dispatch({
// type: 'user/fetchCurrent',
// });
// }
// }, []);
相關文章
- ADFS3.0/4.0 訪問登入頁跳轉到登出介面後再跳轉回登入頁的方法S3
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- 重定向到登入頁面後跳轉原頁面
- Vue學習:實現使用者沒有登陸時,訪問後自動跳轉登入頁面Vue
- 登入頁面
- 直播系統原始碼,啟動APP時判斷登入狀態,引導頁、登入頁、首頁的跳轉方式原始碼APP
- 小程式初始化載入,根據登入狀態判斷跳轉首頁還是登入頁
- 帝國cms登入後臺提示“登入成功”,接著又提示“您還未登入”
- 直播原始碼網站,新使用者登入時的註冊頁面和登入頁面原始碼網站
- Luffy /4/ 多方式登入介面&登入註冊前端頁面前端
- 自動登入方案
- 織夢後臺登入成功又跳轉回登入介面與驗證碼
- javaWeb登入註冊頁面JavaWeb
- 簡單的網頁登入頁面網頁
- 使用Vue寫一個登入頁面Vue
- ubuntu登入時出現“一閃之後回到登入介面”的現象Ubuntu
- PbootCMS登入後頁面載入緩慢怎麼辦boot
- Spring Security 之 rememberMe 自動登入SpringREM
- Vue管理系統前端系列三登入頁和首頁及`vuex`管理登入狀態Vue前端
- jmeter介面自動化:登入到新增JMeter
- “登入”功能有哪些測試點?1000個登入頁面問題分析!
- 自定義登入和登出頁面
- Flutter關於一個登入頁Flutter
- 在首頁判斷是否登入並執行登陸
- .Net Core + NGINX跳轉登入時埠丟失Nginx
- uniapp 完成兩種方式登入 驗證碼登入 密碼登入APP密碼
- [API 寫法] QQ 登入、微信登入、Facebook、google、蘋果登入APIGo蘋果
- JWT登入鑑權:避免在使用者操作的過程中JWT到期跳轉登入JWT
- ssh安全的自動登入
- laravel社會化登入 iframe微信網頁登入失敗的問題Laravel網頁
- vnc登入工具,好用的vnc登入工具,具體登入vnc客戶端使用教程VNC客戶端
- Selenium使用Cookie實現自動登入Cookie
- 掃碼登入是這樣登入的
- linux 免登入以及配置別名登入Linux
- 短視訊直播原始碼,遊客模式下使用正常功能跳轉到登入頁面原始碼模式
- 【轉】linux設定金鑰登入(只允許金鑰登入)Linux
- vnc登入,vnc遠端登入工具的使用方法VNC
- Jmeter 登入使用了 jsencrypt 加密密碼的登入介面JMeterJS加密密碼