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