Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

加入了一个注册路由,使用router-link,只有登录后才能正常跳转,怎样才能使其未登录状态下也能跳转到注册页面 #3

Open
Misletoe95 opened this issue Feb 26, 2021 · 8 comments

Comments

@Misletoe95
Copy link

export const baseRoute = [
{
name: 'login',
path: '/login',
component: () => import('@/views/login/index'),
hidden: true
},
{
name: 'register',
path: '/register',
component: () => import('@/views/register/index'),
hidden: true
}]

@biubiubiu01
Copy link
Owner

export const baseRoute = [
{
name: 'login',
path: '/login',
component: () => import('@/views/login/index'),
hidden: true
},
{
name: 'register',
path: '/register',
component: () => import('@/views/register/index'),
hidden: true
}]

因为我没有做注册页面,所以就没考虑注册页面的问题,刚刚看了下,你在permission里面稍微修改下,先判断isLogin,添加else判断to.path是否在默认不需要登录的里面,具体代码如下,我就不提交记录了。
const baseRoute = ['/login', '/register'];

router.beforeEach(async (to, from, next) => {
NProgress.start();
document.title = getPageTitle(to.meta.title);
const isLogin = getCache('TOKEN');
if (isLogin) {
if (to.path == '/login') {
next();
NProgress.done();
} else {
if (!isLogin) {
next('/login');
} else {
const userInfo = store.state.user.accountInfo;
if (userInfo) {
next();
NProgress.done();
} else {
try {
const { username } = await store.dispatch('user/getInfo');
const accountRoute = await store.dispatch('permission/getRoute', username);

        router.addRoutes(accountRoute);
        next({ ...to, replace: true });
        NProgress.done();
      } catch {
        message.error('获取用户信息失败');
        next('/login');
        NProgress.done();
      }
    }
  }
}

} else {
if (baseRoute.indexOf(to.path) !== -1) {
next();
} else {
next('/login');
NProgress.done();
}
}
});

@Misletoe95
Copy link
Author

大佬你好,我在打包关闭mock后 更改登录的接口名,但其访问的url后仍然带着mock .
请问我如何将登录和获取用户信息切换为自己的接口

@biubiubiu01
Copy link
Owner

大佬你好,我在打包关闭mock后 更改登录的接口名,但其访问的url后仍然带着mock .
请问我如何将登录和获取用户信息切换为自己的接口

你是访问后还带着mock的数据还是/mock前缀,前缀的话就去env里面修改VUE_APP_BASE_API 为你自己的,不要mock数据的话你去vue.config.js只去掉before那行,然后去main.js去掉引入mock的,如果存在跨域的问题,你就配置下vue.config.js配置下proxy

@Misletoe95
Copy link
Author

好的,谢谢。我已经将env.production中的UE_APP_BASE_API 配置为http**:7090 ,现在我访问的url中没有出现/mock,但是我其请求一直在pedding且登录按钮的uploading一直为true。备注:我将后台登录后返回的结果中的某一字段设置为token(后台基于cookies,然后将request中interceptors注释掉了)

1 similar comment
@Misletoe95
Copy link
Author

好的,谢谢。我已经将env.production中的UE_APP_BASE_API 配置为http**:7090 ,现在我访问的url中没有出现/mock,但是我其请求一直在pedding且登录按钮的uploading一直为true。备注:我将后台登录后返回的结果中的某一字段设置为token(后台基于cookies,然后将request中interceptors注释掉了)

@biubiubiu01
Copy link
Owner

好的,谢谢。我已经将env.production中的UE_APP_BASE_API 配置为http**:7090 ,现在我访问的url中没有出现/mock,但是我其请求一直在pedding且登录按钮的uploading一直为true。备注:我将后台登录后返回的结果中的某一字段设置为token(后台基于cookies,然后将request中interceptors注释掉了)

VUE_APP_BASE_API这个是设置前缀的,如'/api' 如果你要请求你本地的 接口的话,就去vue.config.js配置proxy
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: '你的后台地址',
changeOrigin: true
}
}

@Misletoe95
Copy link
Author

后台的登录接口返回成功了。但是页面未发生跳转。请问需要怎么修改?后台和前端是同一个ip和端口
image
result中的值被我设置成token

@biubiubiu01
Copy link
Owner

后台的登录接口返回成功了。但是页面未发生跳转。请问需要怎么修改?后台和前端是同一个ip和端口
image
result中的值被我设置成token

1.你去store user里面看那个login方法,那里是存储的token字段,这个没有,先去修改那个;
2.你要去src/permission 里面去看,这里是获取路由的,我是根据username去判断的,你可以根据你的具体情况去改
我还写了一个node+mysql版本的,感兴趣可以去看看,那个是简化版,走的实际接口。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants