Angularjs 将会话从节点传递到节点
我正在创建一个单页应用程序。我在angular中有一个登录表单:Angularjs 将会话从节点传递到节点,angularjs,node.js,passport.js,mean-stack,Angularjs,Node.js,Passport.js,Mean Stack,我正在创建一个单页应用程序。我在angular中有一个登录表单: <div ng-controller="loginCtrl"> <form> <input type="text" ng-model="user.username"> <input type="password" ng-model="user.password"> <button ng-click="senduser(us
<div ng-controller="loginCtrl">
<form>
<input type="text" ng-model="user.username">
<input type="password" ng-model="user.password">
<button ng-click="senduser(user)">Login</button>
</form>
</div>
我可以使用PassportJS
对用户进行身份验证:
passport.use(new LocalStrategy(function (username, password, done) {
User.findOne({username: username}, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false);}
if (user.password != password) { return done(null, false); }
return done(null, user);
});
}
));
以及节点路由:
app.post("/login", passport.authenticate('local', {
failureRedirect : '/login',
successRedirect: '/loginsuccess'
}));
app.get('/login', function(req, res){
res.send("Try again")
});
app.get('/loginsuccess', function(req, res){
res.send("You are Authenticated : ");
});
到目前为止一切正常。我想将成功重定向
和失败重定向
重定向到同一路径\
,但只为经过身份验证的用户提供会话。因此,基于身份验证,某些字段将在\
页面上可见
我该怎么做?你的实际问题太宽泛了,但我会给你一些指导。。。要执行要求的操作,首先需要向客户端发送一些标识数据,而不是字符串。在客户机中,您需要将该数据存储在会话存储中。在客户端应用程序的其他地方,您需要检查会话存储中是否存在数据并基于此数据处理显示逻辑的逻辑。确定。从节点,我从哪里发送数据?它是来自'successRedirect:'/loginsAccess'还是如何?我是新来的
MEAN
。在某个地方读到我需要将会话存储在Angular service/factory中。我该怎么做呢?您可能想发送一些数据,而不是res.send(“您已通过身份验证”)
,或者至少在客户端,如果您收到该字符串,请对会话存储执行一些操作。至于angular,有多种方法可以处理会话状态,包括使用$window
对象或使用第三方模块,如ngStorage
。我必须发送用户id或用户名。如何从app.get(“\loginsaccess”)
访问它?
app.post("/login", passport.authenticate('local', {
failureRedirect : '/login',
successRedirect: '/loginsuccess'
}));
app.get('/login', function(req, res){
res.send("Try again")
});
app.get('/loginsuccess', function(req, res){
res.send("You are Authenticated : ");
});