php – 仅在Codeigniter中将特定页面限制为登录用户的最佳做法
我已经为我的网站创建了一个注册和登录,所有验证都适用于注册和登录.用户提供有效凭据后,他/她将使用欢迎消息登录到成员区域,该消息显示Hello first_name last_name ..基本上从数据库中获取名字和姓氏. 我想做的任何方法是将成员区域限制为仅登录用户.其他任何人都将被重定向到主页或登录页面,或者我决定将其重定向到哪里. 我使用了ci_sessions,它存储在我的数据库中的表“ci_sessions”中. Session_id,ip_address,user_agent,last_activity和user_data是列.所以我猜这是某种形式的安全性,而不是单独存储在用户浏览器上的cookie还有更多. 无论如何,现在要阻止除登录用户之外的任何其他人访问我的网站成员区域,例如http://example.com/member_area我在我的控制器中为成员区域使用了一个简单的if语句:
这将检查尝试访问成员区页面的人是否在我的ci_sessions表中的user_data中存储了某种数据,例如first_name,如果允许,则允许他们访问该页面,这意味着他们必须已登录并仍然具有一个活跃的会议. 如果在数据库中找不到任何内容,则会将其重定向到网站登录页面.我想知道的是,有更好的方法吗?我现在这样做的方式足够安全吗? 以下是我的型号代码:
您的所有建议表示赞赏. UPDATE 把它添加到我的模型怎么样
这基本上将“logged_in”添加到DB中会话中的用户数据,值为“TRUE”.
} 如果该项目不存在“如果用户未登录则不会存在”,则返回FALSE,用户将被重定向到登录页面 你怎么看? 或者我甚至可以像dsb453rerfksdhbdsks322那样使其成为秘密.随机的东西. 最佳答案 你已经击中了头部,但是有一种更有效的方法.以一种方式扩展基本控制器(我相信最初由Phil Sturgeon概述),但我将在此总结: 请参阅this article以获得非常深入的写作. 但实质上:
所以现在如果你想限制访问,只需:
并且扩展控制器将自动检查用户是否在构造函数中登录. 至于如何,我可能会将user_id设置为检查其设置或用户“组”的值,然后您可以获得系统中的用户权限和不同级别的访问权限. 希望这有所帮助. 编辑 将其添加到application / config.php
在使用CI 2.0时,您需要将MY_Controllers放在Application / CORE而不是Libraries中. 我的应用程序/核心看起来有点像:
(编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |