如何在 Web 应用程序中区分用户
Posted
技术标签:
【中文标题】如何在 Web 应用程序中区分用户【英文标题】:How to differentiate users in web application 【发布时间】:2013-06-05 09:37:01 【问题描述】:如何区分用户,登录后无法查看和编辑其他用户的数据?在日志记录过程中以某种方式记住用户 ID,然后进行 WHERE user_id=x 之类的查询,这是一种好方法吗?还是有其他聪明的方法?
基本上,我正在使用 spring 框架来记录程序,但我并不是这个框架的真正高级用户。用户登录后,他们必须将一些关于他们自己的信息插入数据库(即姓名、姓氏、电子邮件等)并填写他们的时间表。我真的不知道如何获取当前用户的 id,让他们只编辑和插入自己的数据。
【问题讨论】:
你想使用 Spring Security 框架吗? @MaksymDemidas,我更新了我的帖子。 获取用户对象,如@Beshoy Samy 所述。使用数据库中的 user.username 获取 user_id。稍后您可以通过将 user_id 直接注入自定义 User 对象来优化此代码(在这种情况下您需要准备和设置 UserDetailsService)。或者也许 user_id 已经在这里了。 【参考方案1】:是的,您应该将他们的用户 ID 存储在会话变量中(如果您不知道哪些会话也可以查找)
【讨论】:
【参考方案2】:您始终可以使用 SecurityContextHolder 获取当前登录的用户。 SecurityContextHolder 拥有当前线程的登录用户。
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && !authentication.getPrincipal().toString().equalsIgnoreCase("anonymous"))
User loggedInUser = (User) authentication.getPrincipal();
【讨论】:
以上是关于如何在 Web 应用程序中区分用户的主要内容,如果未能解决你的问题,请参考以下文章
如何从任务管理器进程列表中的进程列表中区分不同的JavaWS应用程序?
在firebase中区分普通用户和管理员的最佳方法是啥? [复制]
我正在制作一个应用程序,其中一部分是在其中添加用户制作的博客,我不能在多个页面中区分它们