【问题标题】:How to redirect to other view after authentication身份验证后如何重定向到其他视图
【发布时间】:2017-11-01 03:27:41
【问题描述】:

我正在使用AngularJS和PHP后端在我的应用程序中进行身份验证,在控制器中我放置了一个console.log,以查看身份验证是否有效,当密码和用户名不正确时,我发现一切正常我收到错误消息,当它们错误时,我知道它们不正确,但在这种情况下,我想被重定向到其他视图,当我输入:window.location.href = '#/admin';在这两种情况下,它会将我重定向到管理员视图,而不仅仅是在它们正确时。你能帮帮我吗:

app.controller('loginCtrl', function($scope, $location,$state,$http,$window){

    $scope.submit = function()
        {
          data = {
            'NomClient' : $scope.NomClient,
            'mdp' : $scope.mdp
        };

        $http.post('http://localhost/deb/login.php', data)
        .success(function(data, status, headers, config,result)
        {    
            console.log(data);

            window.location.href = '#/admin';
        })
        .error(function(data, status, headers, config, rsult)
        {    
        console.log('error');

        });
    }

});

登录.php

 <?php  

$data = json_decode(file_get_contents("php://input"));

 $connect = mysqli_connect("localhost", "root", "", "sem1");  


 if(count($data) > 0)  
 { 
$NomClient=mysqli_real_escape_string($connect, $data->NomClient);
$mdp=mysqli_real_escape_string($connect, $data->mdp);


$query = 'SELECT * FROM `client` WHERE NomClient = "'.$NomClient.'" AND   mdp= "'.$mdp.'"';

$q = mysqli_query($connect , $query);

if(mysqli_num_rows($q) > 0 )
  { 
       $_SESSION["logged_in"] = true; 
       $_SESSION["naam"] = $NomClient; 
       $result['code'] = 200;
       $result['message'] ='Logged In';
  }
  else
  {

       $result['code'] = 603;
       $result['message'] ='The username or password are incorrect!';
  }

$resultstring = json_encode($result);
$resultstring = str_replace("null",'""',$resultstring);
echo $resultstring ;
}
?>

提前致谢

【问题讨论】:

    标签: php angularjs mysqli ionic-framework


    【解决方案1】:

    您可以为此使用$state.go()$state.go('admin');

    'admin 必须是你的州名。'

    编辑

    .success 中的代码将在您获取数据且没有任何错误时执行。如果要基于身份验证进行重定向,则需要为此单独编写代码。示例代码如下。

    .success(function(data, status, headers, config,result) {    
        console.log(data);
        if(data.message === 'Logged In') {
          $state.go('admin');
        }
    })
    

    【讨论】:

    • 我尝试了这个解决方案,但我仍然遇到同样的问题,我总是重定向但是密码错误
    • 但是 AUTHENTICATED 没有定义,我应该在这种情况下放什么!
    • dataconsole 中打印什么?
    • 在控制台中,当密码和用户名正确时,我得到结果:登录,和代码200,当我输入错误密码时,我得到结果:用户名或密码不正确!带代码 603
    • 更新了答案。一旦检查它。
    【解决方案2】:

    而不是window.location.href 使用

    $state.go(state_name_of_#/admin)
    

    参考这个$state.go()

    无论身份验证如何,都会在有响应时调用成功函数。

    在你的PHP文件中,只有认证成功才返回true响应,否则返回false给前端

    然后检查 responseresponse.responseMessage 在某处你会发现返回值。

    .success(function(reponse){
        var data = JSON.parse(reponse);
        if(data.code == 200){
           $state.go(enter_your_state_name_of_admin); // example "admin"
        } else {
           // do nothing
        }
    })
    

    【讨论】:

    • 我尝试了这个解决方案,但我仍然遇到同样的问题,我总是重定向但是密码错误
    • 现在检查更新的解决方案。任何你将如何得到回应
    • 我更新了我的 wuestion 并且我已经把 login.php 文件放入了,请问我如何才能在认证成功的情况下返回 true!
    • 请打印出来告诉我结果? echo $resultstring ;
    • 我没明白你的意思!我已经有了“echo $resultstring”
    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多