gpt4 book ai didi

java - 如何管理登录用户页面标题

转载 作者:行者123 更新时间:2023-12-01 14:07:40 25 4
gpt4 key购买 nike

Java servlet 中如何管理堆栈溢出 header 之类的内容?如果您已登录,标题会与未登录时不同,但您仍然可以搜索和使用该网站。

我目前正在通过单个 servlet 将请求分派(dispatch)到我的各种请求处理程序,这些请求处理程序又转发到 JSP;我是否必须在每个请求处理程序中实现逻辑,设置一个属性来指示用户是否登录,然后设置一个 if else JSTL JSP 中的 block 什么的?有什么方法可以在 Controller servlet 中管理它吗?

我见过的用于管理登录用户的所有模式似乎都诉诸于重定向到登录/注册页面,但我不希望有一个全有或全无的系统强制用户登录才能使用该网站,而只是一个不同的 header ,例如堆栈溢出。

最佳答案

首先你需要一个地方来存储用户信息,我会设置一个数据库并使用像 Hibernate 这样的东西。然后你需要一种方法来使用该信息来指定用户并允许登录,我会推荐 Spring Security。我个人最喜欢的获取这两个框架的教程/指南的网站是 Mkyong。这是关于 Spring Security 的一个 http://www.mkyong.com/spring-security/spring-security-hello-world-example/

这是从我参与的项目中获取经过身份验证的用户的代码示例,此示例有一个从数据库检索的用户对象。

public static User currentUser() {
if (SecurityContextHolder.getContext() != null &&
SecurityContextHolder.getContext().getAuthentication() != null &&
SecurityContextHolder.getContext().getAuthentication().getPrincipal() != null &&
SecurityContextHolder.getContext().getAuthentication().getPrincipal() instanceof User) {
//logger.debug(className, "currentUser", "User: " + SecurityContextHolder.getContext().getAuthentication().getPrincipal());
return (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
} else {
return null;
}
}

在 Jsp 中它会读到这样的内容

<c:if test="${esFn:currentUser() not null}">Your logged in!!!</c:if>

esFn是一个在functions.tld中定义的函数,如下所示

<function>
<name>currentUser</name>
<function-class>com.test.User</function-class>
<function-signature>
com.test.User currentUser()
</function-signature>
</function>

关于java - 如何管理登录用户页面标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18769062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com