我有一个User
对象,在成功进行身份验证后,它会被隐藏到会话中(没有安全信息),以便于调用并确定我们是否有经过身份验证的用户或匿名会话。用户可以通过多种途径更改他或她的部分或全部信息,我希望使该会话值保持最新。显而易见的答案是更新afterSave()
回调中的值,但这当然违反了 MVC。
是否有另一种方法可以在一个地方捕获每一个变化,这样我就不必在整个地方丢弃会话写入?我什么都想不出来,也找不到其他的想法。我是唯一一个试图做这样的事情的人吗?
谢谢。
最终解决方案:坦率地说,我将 neilcrookes 的回复标记为答案,因为似乎没有更好的方法。不过,由于这种方式违反了我的强迫症感官,我选择了一条略有不同的道路。我决定让我的User::authenticate()
方法将经过身份验证的用户对象返回给调用者,以便它可以对它做任何想做的事情。调用者“想要”做的一件事是在会话中删除该值。这是冗余,但非常非常有限。在我看来,这比从模型中访问会话感觉更好(尽管如果你这样做肯定是该死的,如果你不设想的话那是该死的)。