在Javascript中创建私有和受保护的成员

sai*_*ran -4 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")
          } 
        }
Run Code Online (Sandbox Code Playgroud)

好吧,我没有解释看到编辑我做了.

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

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

var main=new MyMain();
main.checkauth=true;
main.test();
Run Code Online (Sandbox Code Playgroud)

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

Que*_*tin 5

虽然有各种方法来掩盖变量并使访问变得棘手,但这些技术的主要好处是它们阻止您意外访问它们.

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

你不能阻止他们访问它.

如果要进行安全身份验证,则必须在服务器上执行此操作.

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

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

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

  • 也许他正在以某种方式在他的ASP.net服务器上运行JavaScript代码片段.如果OP使用node.js,他会标记它,并且他不会担心用户访问JS文件. (3认同)
  • 你没有.除非经过身份验证并且您已在服务器上确认了身份验证,否则您根本不会将只有授权用户可用的JavaScript(或数据)发送到浏览器. (3认同)