我正在使用passport js来处理一些身份验证。但是,我也在使用angular $route service来处理我在客户端的模板。因此,我不确定如何继续使用护照,因为doc页面上的示例假定服务器端模板化。例如,
app.post('/login',
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/login',
failureFlash: true
})
);
基于此,似乎" /"和" /登录"用于提供模板,而不仅仅是对RESTful查询或其他内容的响应。我做事的方式,我的模板发生在客户端。在我的角度文件中设置一切
$routeProvider
.when('/', {
templateUrl: 'templates/login.html',
controller: 'MainCtrl'
})
.when('/home', {
templateUrl: 'templates/home.html',
controller: 'MainCtrl'
});
似乎我正在尝试混合搭配,而不是真正理解任何一种做法。
所以我知道到目前为止我可能已经措手不及了,但我想做的是这样的事情
html(login.html)
<h3> Login </h3>
<form action= "login" method="post">
Username:<br>
<input type="text" name="username" value="">
<br>
Password:<br>
<input type="password" name="password" value="">
<br><br>
<input type="submit" value="Submit">
</form>
节点后端
我意识到我没有认证任何东西,但这还不适合我
passport.use(new LocalStrategy(
function (username, password, done) {
console.log(username); // this does not fire
return done(null, null);
}
));
app.post('/login',
passport.authenticate('local', {
successRedirect: '/home',
failureRedirect: '/',
failureFlash: true
})
);
所以我想使用护照进行身份验证,但使用客户端模板/路由来保持单页应用程序的感觉。
有人可以指出我正确的方向吗?或者告诉我,我在做什么是完全被误导了?
编辑:我的代码错误
TypeError: undefined is not a function
这可能不足以对你们任何人有用,但如果需要我可以更深入。具体的错误信息并不是我想要问的精神。
答案 0 :(得分:1)
您可以使用Passport调用自定义回调
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.status(401).end('wrong credentials'); }
//If you use session, skip if you dont
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.status(200).end('user authenticated' + user.username); //That, or hand them a session id or a JWT Token
});
// If you don't use session just response directly to client
res.status(200).end(jwt.createToken(user));
})(req, res, next);
});
http://passportjs.org/docs/authenticate#custom-callback
所以,这里没有服务器端重定向,所有路由逻辑都可以在前端完成
答案 1 :(得分:-2)
使用护照js时,您需要在app.js中包含这段代码
exit()
您的代码
// add #include <cstdlib> at the beginning of your code to use exit()
{
bool error_found = false;
printf("\nEnter number of Processes:");
if(scanf("%d", &n)!=1 || n<0)error_found = true;
else
{
for(i=0;i<n;i++)
{
printf("\nEnter Process ID %d :",i+1);
if(scanf("%d", &process[i])!=1 || process[i]<0){error_found = true; break;}
printf("\nEnter Process Time %d:",i+1);
if(scanf("%d",&ptime[i])!=1 || ptime[i]<0){error_found = true; break;}
}
}
if (error_found) {
// some error exists
puts("MUST NOT ALPHABET OR NEGATIVE NUMBER!");
exit(1);
}
没有您在app.use(passport.initialize());
app.use(passport.session());
使用
passport.use(new LocalStrategy(
function (username, password, done) {
console.log(username); // this does not fire
return done(null, null);
}
));
即使是序列化和反序列化,您也应该实施护照的序列化和反序列化方法
passport.authenticate
`
在LocalStrategy中返回
passport.use('login', new LocalStrategy(
function (username, password, done) {
console.log(username); // this does not fire
return done(null, null);
}
));