【问题标题】:NodeJS redirecting to Angular5 route, returns JSON, not page?NodeJS 重定向到 Angular 5 路由,返回 JSON,而不是页面?
【发布时间】:2018-07-18 21:09:27
【问题描述】:

在(在 API 中)检测到用户不再登录后,我正在尝试重定向用户。 例如,用户向 api 发起一个操作(PUT),api 检查用户状态,如果登录,则执行该操作并返回数据。如果没有,则需要将用户重定向到登录页面,登录路由(/login)在 Angular5 路由器中定义。

这很好,如果登录,一切都很好。

如果没有登录,它会被检测到并记录,但重定向不起作用,起初它尝试在 /login 上使用 PUT 导致 404,这不起作用所以我添加了 303,现在它在 /login 上获取。但是......在我的浏览器控制台中,我得到......

SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttpRequest.onLoad ( etc

它似乎以某种方式试图将页面解析为 JSON ??? 这里发生了什么?我希望有人能给我一个提示,如果有人没有登录,我可以转发到这个页面:)

一些代码(使用 Angular 5)...

在 node/express/passport 中有一小部分用于检查状态的中间件...

function isTeacher(req, res, next) {

    if (req.isAuthenticated() && (req.user.google.role=="teacher" || req.user.google.role=="admin") )

        return next();

    console.log("Not loggedin");    
    res.redirect(303, '/login');

};

在路由器中...

 const appRoutes: Routes = [
    { path: '', redirectTo: '/login', pathMatch: 'full'},
    { path: 'login', component: LoginComponent},
    { path: 'studentlists', component: ListselectorComponent},
    { path: 'studentlisteditor/:listid', component: StudentlisteditorComponent},
    { path: 'teacherlists', component: TeacherlistselectorComponent},
    { path: 'teacherlisteditor/:listid',
        component: TeacherlisteditorComponent,
        children: [
            {path: 'results', component: TeacherresultsComponent },
            {path: 'edit', component: ListeditorComponent },
        ]
    },
    ];

(我是一个真正的初学者,所以我的代码中可能有更多奇怪的东西......对不起,欢迎所有输入;)

【问题讨论】:

  • 您应该在 Angular 应用程序中处理重定向,而不是在 Node.js 应用程序中。

标签: node.js angular express passport.js


【解决方案1】:

我对您的建议是避免在后端进行重定向并从前端进行,我将做的:在您的 isTeacher 方法中,如果不允许用户返回一个响应,表明它无效,然后在您的 Angular应用程序使用路由保护来检查此答案,如果不是预期的,则重定向到登录。 Angular official docs about route guards

【讨论】:

  • 所以... 进行 API 调用 -> 检查 NodeJS 中的状态 -> 如果未登录,则将此信息返回给 Angular -> 让 Angular 重定向(最好使用路由保护) 这听起来像逻辑!是时候做出一些改变了......(这就是你没有适当的编程背景所得到的!)谢谢 Niral 和 Talavera!
  • 没错!欢迎;)
猜你喜欢
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 2021-01-01
相关资源
最近更新 更多