2014-03-03 65 views
1

护照单选选项按钮重定向到注册页面

如果用户拥有“否”单选选项选择的按钮,我怎么重定向到/注册?

ROUTE

// app/routes/users.js 

app.post('/users/session', passport.authenticate('local', { 
    failureRedirect: '/signin', 
    failureFlash: true 
}), users.session); 

VIEW

<form action="https://stackoverflow.com/users/session" method="post"> 
    <input ng-change="change()" ng-model="NotSureWhatToPutHere" type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked> 
    <label for="optionsRadios1"> 
     No, I am a <b>new customer</b>. 
    </label> 
    <input type="radio" ng-model="NotSureWhatToPutHere" ng-change="change()" name="optionsRadios" id="optionsRadios2" value="option2"> 
    <label class="control-label" for="optionsRadios2"> 
    Yes, I have a password: 
    </label> 
    <button type="submit">Sign in</button> 
</form> 

CONTROLLER

// controllers/index.js 

'use strict'; 

angular.module('mean.system').controller('IndexController', ['$scope', 'Global', function ($scope, Global) { 
    $scope.global = Global; 
}]); 

回答

0
Ť

他并不是很多节点/护照问题,这是一个有问题的问题。

我猜你用任何角度(如,$http.post('/users/session',...)提交,或者你有一个<form action='/users/session' ...>

你需要告诉角度,对于单选按钮(如,NG-变化或类似的东西)。当监听用户之间切换没有密码和密码,你应该改变你的网址/注册。

因此,没有必要击中服务器在那里如果你想继续,你可以在那里添加另一个中间件?如:

app.post('/users/session', function(req, res, next) { if (req.body.youroptionselected) return res.redirect('/somewhere'); next(); }, .... other handler here)

虽然这不会重定向到POST /注册 - 重定向从来没有做过。

你的角度控制器(客户端)的例子是这样的:

angular.service('loginService', function($http){ 
    var service = { 
     signin: function(email, password){ 
      $http.post('/users/session', {email: email, password: password}) 
      .success(function(response){ 
       // You're logged in here, you could do something like a redirect. 
      }) 
      .catch(function(err){ 
       console.log('Something wen\'t wrong, show this message or something.'); 
      }); 
     } 
     , signup: function(email) { 
      $http.post('/signup', {email: email}) 
      .success(function(response){ 
       // You've handled this in your backend, now on the client you're in. 
      }) 
      .catch(function(err){ 
       console.log('Something wen\'t wrong with signup., show this message or something.'); 
      }); 
     } 
    } 
}) 

angular.controller('loginController', function(loginService){ 
    // get a hold of the button here 
    $scope.buttonClickHandler = function(){ 
     // if new user, use loginService.signup($scope.email)... 
     // else use loginService.signin($scope.email, $scope.password) ... 
    } 
}) 
+0

我加了NG-变化中的index.html。有没有一个教程,我可以看看有关如何更改网址,而无需连接到服务器的更多信息? – user3373281

+0

呃,很多方法。谷歌或Stackoverflow搜索“Javascript更改表单操作”应该有所帮助。 在您添加的版本中,您的$ scope.change函数应该看起来像function(){/ *如果是新客户,请采取行动* /}。但是,如果你发布角度控制器和更多的index.html,我可以帮助更多。 – Zlatko

+0

哦,不,我的意思是角度控制器。你知道,客户端的JavaScript? – Zlatko

相关问题