gpt4 book ai didi

java - SpringMVC 需要登录才能使用 session 查看页面

转载 作者:行者123 更新时间:2023-11-30 04:54:42 27 4
gpt4 key购买 nike

我已经构建了一个简单的 SpringMVC 登录系统,工作正常,但我想限制页面,说只有有效登录的用户才能看到它们。如果我只使用 JSP,我会检查...

if ( login.equals("admin") && password.equals("guess") ) {
// Valid login
session.setAttribute("authorized", "yes");
} else {
// Invalid login
session.setAttribute("authorized", "no");
}

但是,如果 session 可以访问一组 servlet,我该如何在 SpringMVC 的应用程序中进行全局设置呢?我可以设置 session ,这很好,但是在 SpringMVC 中,我的 session 处理应该在 Controller 或 servlet-context.xml (甚至 web.xml)上完成,这样我就可以检查说“如果用户登录显示此页面,否则主页”。

我的login.jsp是一个非常简单的...

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="true" %>
<html>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<head>
<title>Login</title>
</head>
<body>
<h1>
Hello please login to this application
</h1>
<script>

function login(){
var username = $("#username").val();
var password = $("#password").val();

$.post('login', { username : username , password : password }, function(data) {
$('#results').html(data).hide().slideDown('slow');
} );
}

</script>
Username : <input id="username" type="text" />
Password : <input id="password" type="password" />
<input name="send" type="submit" value="Click me" onclick="login()" />
<form name="next" action="auth/details" method="get">
<input name="send" type="submit" value="Go Through"/>
</form>
<div id="results" />
</body>
</html>

如果用户已登录,我只希望 auth/details 处的 Controller 返回详细信息,对此的最佳方法是什么? Cookie/ session 等?

谢谢

大卫

最佳答案

看起来像是重新发明轮子。 Spring Security已经处理了您的情况,并且在 web.xml 中使用几行 XML(定义 servlet 过滤器)和一些基本配置,它将限制对选定 URL 的访问,提供登录/注销屏幕,处理用户存储和 HTTP session 管理。

虽然已知非常复杂,但默认配置(auto)足以启动:

<http auto-config='true'>
<intercept-url pattern="/**" access="ROLE_USER" />
</http>

请参阅tutorial 。另外Apache Shiro如今似乎受到了很大的关注。

如果由于某种原因,您不想将 Spring Security 引入您的堆栈,Spring MVC interceptors是实现跨领域安全逻辑的好地方。您可以访问原始请求和响应,因此可以发现 URL 并检查 HTTP session 。

关于java - SpringMVC 需要登录才能使用 session 查看页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915640/

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