2010-07-11 70 views
3

Oi!登录后返回上一页

我很久以前就想在我的网站上登录一个返回镜像页面功能。但最好的方法是什么?

我在想保存网址到会话中,当他/她登录,我检查returnto会话如果设置,如果是,我重定向到该页面

那是安全/好?

+1

您提出的解决方案对我来说很有意义。 – 2010-07-12 03:02:30

回答

6

这通常通过将上一页的URL放入登录页面的查询字符串中来完成。

编辑:确保验证该URL是相对路径并对其进行正确编码。

+1

是的,我看到几乎每个网站都这样做,但是如何让它安全?一个白名单? – Berra 2010-07-11 22:55:40

+0

重要吗?无论如何,您应该检查每个页面上的访问权限 - 访问控制比“用户是否登录?是的?他们必须有访问权限!”如果有人通过他们不应该访问的页面,则应该已经阻止了该页面。否则,只要在地址栏中输入,就可以登录并进入被阻止页面,并且可以实现同样的效果,就好像他们将查询字符串放到了登录页面的URL中一样。 – cHao 2010-07-11 23:06:29

+1

你如何使它安全抵御什么? – SLaks 2010-07-11 23:08:32

2

每个页面的顶部(会话正确初始化&配置后,无论初步&你需要很重要),你需要射击一个功能(例如,“checkLogin()”),以检查&看是否访问根据一些特定的条件,用户已经设置了会话/ cookie /许可(针对该页面)。
要检查每个特定页面需要什么所有权限,可以将有关这些权限的一些参数传递给函数定义,并将用户认证为合适的。

如果设置了条件,您可以将用户作为已验证的用户重定向到他所请求的页面,否则只是将他重定向到您的站点的登录页面(其请求的页面在查询字符串中提到或保存在一个会话变量)。现在经过适当的登录&设置特定的权限进行身份验证,您可以轻松地使用查询字符串的请求页面的值重定向到他的目的地。

希望它有帮助。

+1

我做了upvote这个,虽然我不同意暴露内部的任何东西放在查询字符串的安全性。 @ bob-the-destroyer在这方面绝对正确。一个相当安全的方法是使用提供checkLogin()函数的mysql查询并从那里提取任何你想要的东西。帖子也可以工作,cookies会起作用,但不会很安全。 – 2012-06-10 01:50:58

+0

@tony gil - 我同意你的看法以及“驱逐舰”的说法。感谢您指出正确的方向! – 2012-06-10 15:16:09