已经审核了其他答案,没有任何帮助。只是想让用户名显示在我的主页面上。它适用于其他页面。可能是我错过了一些容易的东西,但我已经盯着这个足够长的时间了。 获取它的主页:
<div ng-controller="dashboardController" flex layout="column" layout-align="center center">
<md-toolbar>
<div class="md-toolbar-tools">
<h1>
<span>Welcome {{user.username}}</span>
<h2>
<span>NAME OF MY THIS SITE</span>
</h2>
<span flex></span>
<md-button ng-click="logout()" aria-label="Log Out">
Log Out
</md-button>
</div>
</md-toolbar>
</div>
主页面控制器:
kelvindashdemo.controller('dashboardController', ['$scope', 'UserFactory', '$routeParams', '$location', 'TopicFactory', function($scope, UserFactory, $routeParams, $location, TopicFactory){
UserFactory.getUser($routeParams.id, function(user){ //makes request to backend and sets $scope to the user id
$scope.user = user;
console.log($routeParams);
})
$scope.logout = function(){
UserFactory.logout();
}
TopicFactory.getTopics(function(topics){
$scope.topics = topics;
})
$scope.createTopic = function(topic){
TopicFactory.createTopic(topic, function(){
TopicFactory.getTopics(function(topics){
$scope.topics = topics;
$scope.newTopic = {};
})
})
}
}])
UserFactory:
kelvindashdemo.factory('UserFactory', ['$http','$location', function($http, $location){
var factory = {};
factory.login = function(user, callback){
$http({
method:"POST",
data:user,
url:'/login'
}).then(function success(res){
callback(res);
}, function error(res){
console.log(res);
});
}
factory.register = function(user, callback){
$http({
method:"POST",
url:'/register',
data:user
}).then(function success(res){
callback(res);
}, function error(res){
console.log(res);
});
}
factory.getUser = function(userId, callback){
$http({
method:"GET",
url:'/user/'+userId
}).then(function success(res){
callback(res.data);
})
}
factory.logout = function(){
$http({
method: 'GET',
url: '/logout',
}).then(function(res){
if (res.status == 200){
$location.url('/login');
}
})
}
return factory;
}])
路线:
var Users = require('../controllers/Users.js');
var Topics = require('../controllers/Topics.js');
var Answers = require('../controllers/Answers.js');
var Comments = require('../controllers/Comments.js');
module.exports = function(app){
app.post('/login', Users.login);
app.post('/register', Users.register);
app.get('/logout', Users.logout);
app.use(loginAuthentication);
//Protected API
app.get('/user/:id', Users.get);
app.get('/topics', Topics.getAll);
app.post('/topics', Topics.createNew);
app.get('/topic/:id', Topics.get);
app.post('/topic/:id/answers/', Answers.createNew);
app.get('/comments/likes/:id', Comments.like);
app.get('/comments/dislikes/:id', Comments.dislike);
app.post('/answers/:id/comments', Comments.createNew);
}
function loginAuthentication(req,res,next){
if (req.session.user){
next();
}else{
res.status(401).send("User is not logged in");
}
}
服务器端UsersController:
var mongoose = require('mongoose');
var User = mongoose.model('User');
module.exports = {
register: function(req,res){
/* username:? , password:?, passwordconfirm:? */
if (req.body.password != req.body.password_confirm){
console.log("These passwords dont match");
return res.sendStatus(400);
}
var user = new User(req.body);
user.save(function(err, user){
if (err){
console.log("This is a db error");
return res.status(400).json(err);
}
else if(user){
console.log("This is a good registration", user);
req.session.user = user._id;
res.sendStatus(200);
}
})
},
login: function(req,res){
/* username:? , password:? */
var password = req.body.password; /*for hashing of passwords in the future*/
User.findOne({username: req.body.username, password: password}, function(err, user){
if (err){
console.log("This is the json error");
return res.status(400).json(err);
}
else if (user){
console.log("This is a good combo");
req.session.user = user._id;
res.sendStatus(200);
}else{
console.log("This is the no good return msg")
res.status(400).send({data:"Yo, Username Password combo be no good"});
}
})
},
logout: function(req,res){
console.log("You are out man 1");
req.session.destroy();
console.log("You are out man");
res.send(200);
},
get: function(req,res){ //pulls userId in association with $routeParams
User.findOne({_id: req.params.id}, function(err, user){
if(err){
return res.sendStatus(500);
}else{
res.json(user);
}
})
}
}
用户模型:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new mongoose.Schema({
username: {type:String, required:true, minlength:4},
password: {type:String, required:true, minlength:4, select:false},
topics: [{type: mongoose.Schema.Types.ObjectId, ref:'Topic'}],
answers: [{type: mongoose.Schema.Types.ObjectId, ref:'Answer'}],
comments: [{type: mongoose.Schema.Types.ObjectId, ref:'Comment'}],
}, {timestamps:true});
mongoose.model('User', UserSchema);
Server.js:
//Node modules
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var expressSession = require('express-session');
var path = require('path');
//App init
var app = express();
require('./server/config/mongoose.js');
var sessionConfig = {
secret:'CookieMonster', // Secret name for decoding secret and such
resave:false, // Don't resave session if no changes were made
saveUninitialized: true, // Don't save session if there was nothing initialized
name:'myCookie', // Sets a custom cookie name
cookie: {
secure: false, // This need to be true, but only on HTTPS
httpOnly:false, // Forces cookies to only be used over http
maxAge: 3600000
}
}
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json({extended:true}));
app.use(expressSession(sessionConfig));
app.use(express.static(path.join(__dirname, 'client')));
var routes = require('./server/config/routes.js');
routes(app);
app.listen(8000, function(){
console.log("I'm listening...");
})
任何帮助将不胜感激!