如何在 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 对象来优化此代码(在这种情况下您需要准备和设置 UserDetailsS​​ervice)。或者也许 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中区分普通用户和管理员的最佳方法是啥? [复制]

如何在 Mac 上的 C# 中区分进程的用户

我正在制作一个应用程序,其中一部分是在其中添加用户制作的博客,我不能在多个页面中区分它们

如何在 JavaScript 中区分 iPhone、iPad 和 iPod?

如何在 iPhone 和 iPad 应用程序中区分真脸和假脸?