我有一个 Rails/Backbone 应用程序,它使用 JavaScript/Ajax(使用主干)实现设计身份验证。用户登录后,我将设计中的 userSession 响应对象分配给 app.currentUser 以创建客户端 currentUser。
app.currentUser = userSession;
但是,我使用 currentUser 的方式,我不妨只给它一个布尔值,因为我不使用任何 userSession 信息。
继续,在我的应用程序的其他方法中,我通过查看是否有这样的当前用户来检查授权
if(!app.currentUser) {
this.trigger("pleaseSignIn");
return;
}
else {
....
当我测试它时,这很好用——如果用户没有登录,他就无法继续使用应用程序的某些部分。但是,任何具有基本 javascript 技能的人都可以通过app.currentUser = true
在控制台中进行设置来绕过登录。我不是在授权背后保护国家机密;它只是为了鼓励注册等。我的问题是,有没有办法在不检查当前用户是否存在于服务器端(即设计设置当前用户服务器端登录)的情况下稍微加强这一点。
我考虑的一个(弱)策略是为我的变量使用完全没有意义的名称。即,而不是if(!app.currentUser) {
我可能会if(!app.godNotDead)
这样说,至少有人必须通过废话来破解我的多孔身份验证墙。但是,我仍然希望有一些更强大的东西。
也许我应该多解释一下这个应用程序是如何工作的。它一开始没有认证墙。相反,用户可以玩应用程序的某些部分,只有当他们尝试点击应用程序的其他部分时才会被要求登录。
仅供参考,在正常的设计设置中,授权在服务器上的 Rails 控制器中检查,并且不能以这种方式绕过。