【问题标题】:Cookies with AngularJSAngularJS 的 Cookie
【发布时间】:2017-07-31 20:24:55
【问题描述】:

我正在尝试在我的应用程序中应用 cookie,并且按照我从许多教程中阅读的内容进行操作,但我没有得到任何结果,也没有显示错误。我想将经过身份验证的用户保存在 cookie 中并在其他视图中显示!请问哪里有问题!

app.js

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

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

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

            if(data.role == 'client'){
                $state.go('view');  
                console.log(data);
                 $scope.myCookie=$cookies.get('cookie');
                $scope.setCookie = function(data){
                  $cookies.put('cookie',data);
                }


             }

view.html

<div class="container" ng-controller="loginCtrl">
{{myCookie}}

【问题讨论】:

  • 通过 devtools () F12 -> 应用程序检查您的 cookie。如果它们被标记为 HTTPOnly(并且大多数 auth cookie 是),则您根本无法访问它们
  • 我按照您的建议检查了 cookie,但我不明白您的想法!你能解释一下吗!
  • 1.检查您的 cookie 是否存在。如果没有,则添加它们。 2. 如果它们存在,则添加它们 - 检查它们是否标记为 HttpOnly 标志。如果是 - 您根本无法访问它们。它们受到 js 的保护。 Chrome -> F12-> 应用程序-> Cookies -> 右侧表格
  • 为什么在声明之前尝试获取cookie?

标签: angularjs cookies


【解决方案1】:

试试 ngCookies 先安装吧

npm install --save angular-cookies

在 index.html 中添加它的路径

<script src="path/to/angular-cookies.js"></script>

最后,通过将模块添加为依赖模块将其加载到您的应用程序中:

var app = angular.module('app', ['ngCookies']);

然后编辑你的控制器如下

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

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

    $http.post('http://localhost/deb/login.php', data)
    .then(function(res)
    {


        console.log(res.data);

        if(res.data.role == 'client'){
            $state.go('view');  
            $cookieStore.put('email',res.data.email);
            $cookieStore.put('token',res.data.token);
         }

以及何时访问 cookie

$cookieStore.get('cookieName');

更多信息请查看doc

编辑

现在以不同的方式显示所有内容

$scope.name=$cookieStore.get('email');

【讨论】:

  • 就像你之前做的那样 $scope.myCookie = $cookieStore.get('cookieName');
  • 和 html view.html
    {{myCookie}}
  • 我就是这样做的,但我不知道为什么它不起作用
  • 试试 console.log($cookieStore.get('cookieName'));
  • 看看它是否在浏览器控制台中显示了一些东西
猜你喜欢
相关资源
最近更新 更多
热门标签