在Javascript

时间:2015-09-04 09:34:15

标签: javascript oop private-members

您是否可以在Javascript中分享有关创建私人和受保护成员的观点。

我的意思是真正保护,不仅仅是道格拉斯·克罗克福德所说的惯例。

不要使用_(下划线)作为名称的第一个字符。它有时用于表示隐私,但实际上并不提供隐私。如果隐私很重要,请使用提供私人会员的表格。避免表现出缺乏能力的惯例。

       "use strict";

        function MyMain(){
          this.checkauth=false;
        }

        MyMain.prototype.init=function(){
          return Object.create(this);
        }

        MyMain.prototype.authenticate=function(key){

 //resp is server response hold true for the given key.  here validate method will interact with server and get concerned response
             var resp=validate(key);
            if(resp){
              this.checkauth=true;
              return true;
            }
            return false;
        }

        MyMain.prototype.test=function(){
          if(this.checkauth==true){
            console.log("this is working")
          }else{
              console.log("Not authorized")
          } 
        }

嗯,我在解释中看到了我编辑的内容。

我无意在客户端进行授权。我在服务器上制作并让私人成员说真的说服务器验证了用户,我的问题是如何使这个安全。

有权访问我的Javascript文件的用户可以阅读所有内容并进行身份验证。

var main=new MyMain();
main.checkauth=true;
main.test();

寻求有关通过javascript创建安全身份验证的帮助。

1 个答案:

答案 0 :(得分:5)

虽然有各种方法可以屏蔽变量并使访问变得棘手,但这些技术的主要好处是它们阻止您偶然访问

浏览器的所有者可以访问您发送到浏览器的所有代码所有数据

您无法阻止他们访问它。

如果您想进行安全身份验证,那么必须在服务器上执行此操作。

  

我无意在客户端进行授权。

如果您没有使用authz客户端,那么设置main.checkauth=true;的用户对您来说不会有问题。

如果用户未经授权,您需要不发送仅供授权用户使用的数据和JavaScript。目前,您似乎在服务器上进行授权,但无论如何都要将授权用户的所有数据/ JS发送给客户端(只需要一些客户端代码说明"请不要看在这")。