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创建安全身份验证的帮助.
虽然有各种方法来掩盖变量并使访问变得棘手,但这些技术的主要好处是它们阻止您意外访问它们.
浏览器的所有者可以访问您发送到浏览器的所有代码和所有数据.
你不能阻止他们访问它.
如果要进行安全身份验证,则必须在服务器上执行此操作.
我无意在客户端进行授权.
如果您没有使用authz客户端,那么用户设置main.checkauth=true;
对您来说不是问题.
如果用户未获得授权,您不需要发送仅供授权用户使用的数据和JavaScript.目前,您似乎在服务器上进行授权,但无论如何都要将授权用户的所有数据/ JS发送给客户端(只需要一些客户端代码说"请不要看这个").