feat: redirect to login page if login expired (close #18)
This commit is contained in:
parent
03491029f2
commit
f16a2a5645
@ -16,7 +16,7 @@ func authHelper(c *gin.Context, minRole int) {
|
|||||||
id := session.Get("id")
|
id := session.Get("id")
|
||||||
status := session.Get("status")
|
status := session.Get("status")
|
||||||
if username == nil {
|
if username == nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusUnauthorized, gin.H{
|
||||||
"success": false,
|
"success": false,
|
||||||
"message": "无权进行此操作,未登录",
|
"message": "无权进行此操作,未登录",
|
||||||
})
|
})
|
||||||
|
@ -10,7 +10,7 @@ import {
|
|||||||
Modal,
|
Modal,
|
||||||
Segment,
|
Segment,
|
||||||
} from 'semantic-ui-react';
|
} from 'semantic-ui-react';
|
||||||
import { Link, useNavigate } from 'react-router-dom';
|
import { Link, useNavigate, useSearchParams } from 'react-router-dom';
|
||||||
import { UserContext } from '../context/User';
|
import { UserContext } from '../context/User';
|
||||||
import { API, showError, showSuccess } from '../helpers';
|
import { API, showError, showSuccess } from '../helpers';
|
||||||
|
|
||||||
@ -20,6 +20,7 @@ const LoginForm = () => {
|
|||||||
password: '',
|
password: '',
|
||||||
wechat_verification_code: '',
|
wechat_verification_code: '',
|
||||||
});
|
});
|
||||||
|
const [searchParams, setSearchParams] = useSearchParams();
|
||||||
const [submitted, setSubmitted] = useState(false);
|
const [submitted, setSubmitted] = useState(false);
|
||||||
const { username, password } = inputs;
|
const { username, password } = inputs;
|
||||||
const [userState, userDispatch] = useContext(UserContext);
|
const [userState, userDispatch] = useContext(UserContext);
|
||||||
@ -28,6 +29,9 @@ const LoginForm = () => {
|
|||||||
const [status, setStatus] = useState({});
|
const [status, setStatus] = useState({});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (searchParams.get("expired")) {
|
||||||
|
showError('未登录或登录已过期,请重新登录!');
|
||||||
|
}
|
||||||
let status = localStorage.getItem('status');
|
let status = localStorage.getItem('status');
|
||||||
if (status) {
|
if (status) {
|
||||||
status = JSON.parse(status);
|
status = JSON.parse(status);
|
||||||
|
@ -54,14 +54,18 @@ export function showError(error) {
|
|||||||
console.error(error);
|
console.error(error);
|
||||||
if (error.message) {
|
if (error.message) {
|
||||||
if (error.name === 'AxiosError') {
|
if (error.name === 'AxiosError') {
|
||||||
switch (error.message) {
|
switch (error.response.status) {
|
||||||
case 'Request failed with status code 429':
|
case 401:
|
||||||
|
// toast.error('错误:未登录或登录已过期,请重新登录!', showErrorOptions);
|
||||||
|
window.location.href = '/login?expired=true';
|
||||||
|
break;
|
||||||
|
case 429:
|
||||||
toast.error('错误:请求次数过多,请稍后再试!', showErrorOptions);
|
toast.error('错误:请求次数过多,请稍后再试!', showErrorOptions);
|
||||||
break;
|
break;
|
||||||
case 'Request failed with status code 500':
|
case 500:
|
||||||
toast.error('错误:服务器内部错误,请联系管理员!', showErrorOptions);
|
toast.error('错误:服务器内部错误,请联系管理员!', showErrorOptions);
|
||||||
break;
|
break;
|
||||||
case 'Request failed with status code 405':
|
case 405:
|
||||||
toast.info('本站仅作演示之用,无服务端!');
|
toast.info('本站仅作演示之用,无服务端!');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user