繁体   English   中英

如何查看谁从server.xml文件登录?

[英]How to see who's logged in from server.xml file?

我已经在Java Spring应用程序中配置了server.xml文件,以便从数据库表和角色登录时对用户进行身份验证。 我想知道如何用Java代码检查谁登录了应用程序?

我知道在jsp文件中,我可以使用以下语法显示名称:

${pageContext.request.userPrincipal.name} .

http://www.baeldung.com/spring-security-track-logged-in-users中提供了非常漂亮的文章

每当将用户信息添加到会话或从会话中删除用户信息时,您都可以利用HttpSessionBindingListener更新登录用户的列表,这取决于用户登录到系统或从系统注销。

它将侦听HttpSessionBindingEvent类型的事件,该事件在设置或删除值(即绑定到或未绑定到HTTP会话)时触发。

@Component
public class LoggedUser implements HttpSessionBindingListener {

    private String username; 
    private ActiveUserStore activeUserStore;

    public LoggedUser(String username, ActiveUserStore activeUserStore) {
        this.username = username;
        this.activeUserStore = activeUserStore;
    }

    public LoggedUser() {}

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        List<String> users = activeUserStore.getUsers();
        LoggedUser user = (LoggedUser) event.getValue();
        if (!users.contains(user.getUsername())) {
            users.add(user.getUsername());
        }
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        List<String> users = activeUserStore.getUsers();
        LoggedUser user = (LoggedUser) event.getValue();
        if (users.contains(user.getUsername())) {
            users.remove(user.getUsername());
        }
    }

    // standard getter and setter
}

您可以在此处查看整个代码

你也可以使用Spring Security检索当前登录的用户通过这个ARTICAL去

或通过请求

request.getUserPrincipal().getName();

在您的Spring MVC Controller中,只需添加以下语句:

String loggedUser = request.getUserPrincipal().getName();

其中requestHttpRequest类型的对象,Spring可以根据需要提供给您。

您可以编写一种方法来获取当前登录的用户,因为您可能需要以下各种位置:

public User getCurrentLoggedInUser() {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth != null) {
            Object principal = auth.getPrincipal();
            if (principal instanceof User) {
                return ((User) principal);
            }
        }

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM