如果我有一个加载用户对象的处理程序拦截器,将其添加到请求属性,我是否要强制转换以获取对象?

发布于 2024-09-10 09:47:31 字数 252 浏览 4 评论 0原文

我计划创建一个处理程序拦截器,它将在调用控制器之前触发(或者我将执行此预操作触发)。

然后我将检查用户的 cookie,并根据 cookie 中的 sessionid 加载用户对象。

然后,我将用户对象添加到请求属性中。

现在,如果我想在控制器操作中检索用户对象,是否将其转换为 (User) ?

我相信我的 freemarker 模板我可以正确执行 ${user.name} 吗?或者是 user.getUsername ?

I plan to create a Handler interceptor that will fire before the controller gets called (or I'll do this pre-action firing).

I will then check the user's cookie, and load the user object based on the sessionid in the cookie.

I will then add the user object to the request attributes.

Now if I want to retrieve the user object in my controllers action, do I cast it to (User) ?

I believe in my freemarker template I can just do ${user.name} correct? or is it user.getUsername ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甲如呢乙后呢 2024-09-17 09:47:31

首先,你最好把用户放在session中,这样cookie>用户转化不会在每次请求时发生。

其次,您可以通过调用从那里(会话/请求)获取它。

User user = (User) session.getAttribute(USER_KEY); // this is s String constant

另外,您可以创建一个类UserHolder,在其中传递一个HttpSession,它为您提供用户,从而避免控制器组中的强制转换。

相同的方法可以用于 HttpServletRequest

First, you'd better place the user in the session, so that the cookie > user conversion does not happen on each request.

Second, you can just get it from there (session/request) by calling

User user = (User) session.getAttribute(USER_KEY); // this is s String constant

Alternatively, you can make a class UserHolder, where you pass an HttpSession and it gives you the user, thus sparing the casts in your controller cote.

The same approach can be used with HttpServletRequest.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文