在Node/Express中登录Passport JS后没有刷新页面和搜索
No refresh page and search after Passport JS login in Node/Express?
我正在使用Yelp API和MEAN堆栈制作场地搜索应用程序。在使用Passport JS登录Facebook后,您可以添加或删除自己去某个地点。
如果用户输入搜索,结果显示在页面上(作为未经身份验证的用户),您登录并被重定向到主页,搜索结果刷新。
我想要的是用户不需要再次搜索。基本上不刷新页面或者不刷新$scope。在Angular中,它是一个保存所有场馆数据的对象。
例如:- 我搜索阿姆斯特丹
- 我得到了阿姆斯特丹所有场地的列表 我登录
- 阿姆斯特丹的搜索结果还在
我该怎么做呢?
这些是Node/Express中的Passport JS路由:
var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var session = require('express-session');
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(id, done) {
done(null, id);
});
app.get('/auth/facebook', passport.authenticate('facebook'));
//Authenticate with Passport when hitting this route
app.get('/auth/facebook/callback', passport.authenticate('facebook', {
//Handle callback after successfully authenticated woth Facebook
successRedirect: '#/reload/' + searchQuery,
failureRedirect: '/error'
}));
这是我在Angular中的内容:
angular.module("popperooApp", ['ngRoute'])
.config(function($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "list.html",
controller: "ListController"
}).when("/reload/:query", {
templateUrl: "list.html",
controller: "ReloadController"
})
.otherwise({
redirectTo: "/"
});
})
.service("Venues", function($http) {
this.getVenues = function(location) {
var url = "search/" + location;
return $http.get(url);
};
})
.controller('ListController', function($scope, Venues) {
$scope.searchLocation = function(location) {
Venues.getVenues(location)
.then(function(response) {
$scope.venues = response.data;
}, function(response) {
alert("Error retrieving venues");
console.log(response);
});
};
})
.controller('ReloadController', function($scope,Venues,$routeParams){
Venues.getVenues($routeParams.query)
.then(function(response){
$scope.venues = response.data;
}, function(response){
alert("Error retrieving venues");
console.log(response);
});
})
我应该在MongoDB数据库中存储会话吗?难道我不应该在Angular中重定向到"/"路由并自定义一些东西吗?
谢谢你的帮助!
您应该重定向到您已经实现的搜索URL,不需要在会话中存储信息。
我认为在你的情况下,最好的方法是将用户重定向到当前加载的页面,所以它不仅仅适用于搜索。
当然,假设你可以通过这个URL访问你的应用程序,并且应用程序会根据这个URL自动重新加载搜索结果。
好运。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- 用于搜索的聚合物嵌套绑定
- 在javascript中搜索具有重复值的两个数组中的匹配值
- 如何解决Yii中的页面刷新问题
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 使用javascript搜索具有用户输入的数组
- 在自动刷新网页时搜索单词
- 在 ajax POST 后根据搜索条件刷新表
- 允许在表刷新后键入数据表搜索按钮
- 需要搜索框不刷新页面,因此函数将加载标记
- 在Node/Express中登录Passport JS后没有刷新页面和搜索
- 如何刷新过滤搜索时的“清除”按钮;在文本的边缘点击
- 为什么当我点击搜索时页面会刷新
- 刷新表后对数据表进行排序和搜索