在 URL 中隐藏参数值 (guid) [英] Hide param value (guid) in an URL

查看:51
本文介绍了在 URL 中隐藏参数值 (guid)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的路线上

.when('/user:user_guid',{templateUrl : 'users/profile.html',控制器:'用户控制器'})

在我的 index.html 中的 ng-repeat 我有

<a href="#/user/:{{user.user_guid}}">查看个人资料</a>

它有效,但在我的 URL 中,我看到 guid 已暴露.有什么办法可以隐藏吗?

解决方案

使用 ng-click

<a ng-click="go_url(user)">查看个人资料</a>

然后在一些控制器中

//它有很多可能的解决方案,这是其中之一//根据您的配置,您正在使用角度路由提供程序$scope.go_url = 函数(_user){//一定要注入$location服务$location.path('/user/' + _user.user_guid);}

如果您不想在浏览器中暴露 URL,请使用可以在内部保存 guid 变量的服务,并在用户导航到 /user

时抓取它<小时>

这是演示

angular.module('demo', ['ngRoute']);angular.module('demo').config(function($routeProvider){$routeProvider.when('/欢迎', {templateUrl: 'welcome_page'}).when('/用户', {templateUrl: 'hello_page'}).otherwise({redirectTo: '/welcome'});});angular.module('demo').service('SecretServ', function(){this.secret_guid = '';});angular.module('demo').controller('Controller1', function($scope, $location, SecretServ){$scope.user = {指南:'123345567234'};$scope.go = function(){SecretServ.secret_guid = $scope.user.guid;$location.path('/user');};});angular.module('demo').controller('Controller2', function($scope, SecretServ, $location){$scope.guid = SecretServ.secret_guid;$scope.exit = function(){$location.path('/欢迎');}});

<script src="https://code.angularjs.org/1.4.4/angular.js"></脚本><script src="https://code.angularjs.org/1.4.4/angular-route.js"></script><div ng-app="演示">我的应用<div ng-view></div><script id="welcome_page" type="text/ng-template"><div ng-controller="Controller1">欢迎
要转到私人页面,请单击<button ng-click="go()">me</button>

<script id="hello_page" type="text/ng-template"><div ng-controller="Controller2">你好{{guid}},<button ng-click="exit()">exit</button>

In my route

.when('/user:user_guid',{
        templateUrl : 'users/profile.html',
        controller : 'userController'
    })

In my index.html within the ng-repeat I have

<a href="#/user/:{{user.user_guid}}">view profile</a>

It works but in my URL I'm seeing the guid has been exposed. Is there any way to hide it?

解决方案

Use ng-click

<a ng-click="go_url(user)">view profile</a>

and then in some controller

//it has many possible solutions, this is one of them
//according to your config, you're using angular route provider
$scope.go_url = function(_user){
    //be sure to inject $location service
    $location.path('/user/' + _user.user_guid);
}

If you don't want to expose URL in browser, use service that can hold guid variable inside, and grab it when user navigates to /user


Here's the demo

angular.module('demo', ['ngRoute']);
  angular.module('demo').config(function($routeProvider){
    $routeProvider
    .when('/welcome', {
      templateUrl: 'welcome_page'
    })
    .when('/user', {
      templateUrl: 'hello_page'
    })
    .otherwise({redirectTo: '/welcome'});
  });
  angular.module('demo').service('SecretServ', function(){
    this.secret_guid = '';
  });
  angular.module('demo').controller('Controller1', function($scope, $location, SecretServ){
    $scope.user = {
      guid: '123345567234'
    };
    $scope.go = function(){
      SecretServ.secret_guid = $scope.user.guid;
      $location.path('/user');
    };
  });
  angular.module('demo').controller('Controller2', function($scope, SecretServ, $location){
    $scope.guid = SecretServ.secret_guid;
    $scope.exit = function(){
      $location.path('/welcome');
    }
  });

<script src="https://code.angularjs.org/1.4.4/angular.js"></script>

<script src="https://code.angularjs.org/1.4.4/angular-route.js"></script>

<div ng-app="demo">
  My app
  <div ng-view></div>
<script id="welcome_page" type="text/ng-template">
<div ng-controller="Controller1">
Welcome<br>
To go to private page, click <button ng-click="go()">me</button>
</div>  

</script>
<script id="hello_page" type="text/ng-template">
<div ng-controller="Controller2">
Hello {{guid}}, <button ng-click="exit()">exit</button>
</div>    
</script>
</div>

这篇关于在 URL 中隐藏参数值 (guid)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆