【发布时间】: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