我已经建立了一个提供一些基本的“我可以这样做吗?”的类。我的网站的授权功能,比如“这个用户可以查看这个资源吗?”或“该用户是否可以添加图片?”存储授权对象到会话?
因此类对象实例化在不少页面(可能,每一页都具有用户交互)使用$authorize = new myAuthorizationClass();
然后myAuthorizationClass
类中查找用户的ID,并检查他们的访问级别。
然后我可以这样说
if ($authorize->canAddImage()){
// do image add stuff
}
是否有可能的,安全的和“最佳实践”这个$authorize
对象存储到会话中?有没有另外一种方法来避免在每个页面上构建这个认证对象,并进行数据库交互等?
我不认为它可以这么简单,只是说“将用户的权限级别设置为A,B或C,并在他们的会话中设置!”因为他们对特定资源的访问取决于谁拥有资源,用户在站点中扮演什么角色等等,我们必须根据访问的资源类型来检查一些不同的事情。
由于
IIRC,在会话中存储授权信息被认为是不好的做法,特别是在基于cookie的会话中,因为cookie可能会非常容易地在不安全的wifi等设备上被窃取。 –
@ truth - 谢谢,我认为你是对的,但是这会存储一个对象,然后执行身份验证操作作为函数。不确定这是否可能!但是,想要与专家权衡。 – julio