Java SpringMVC需要登录才能使用会话查看页面

Java SpringMVC需要登录才能使用会话查看页面,java,servlets,spring-mvc,Java,Servlets,Spring Mvc,我已经构建了一个简单的SpringMVC登录系统,该系统运行良好,但我想限制页面,使其只能使用具有有效登录名的用户才能看到它们。如果我只使用JSP,我会检查 if ( login.equals("admin") && password.equals("guess") ) { // Valid login session.setAttribute("authorized", "yes"); } else { // Invalid lo

我已经构建了一个简单的SpringMVC登录系统,该系统运行良好,但我想限制页面,使其只能使用具有有效登录名的用户才能看到它们。如果我只使用JSP,我会检查

if ( login.equals("admin") && password.equals("guess") ) {
        // Valid login
        session.setAttribute("authorized", "yes");
} else {
        // Invalid login
        session.setAttribute("authorized", "no");
}
但是,如果会话可以访问一组servlet,那么如何在SpringMVC中全局设置我的应用程序?我可以设置会话,但在SpringMVC中,我的会话处理应该在控制器或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>

登录
您好,请登录此应用程序
函数登录(){
var username=$(“#username”).val();
var password=$(“#password”).val();
$.post('login',{username:username,password:password},函数(数据){
$('#results').html(data.hide().slideDown('slow');
} );
}
用户名:
密码:
我只希望auth/details的controller返回那里的详细信息如果用户已经登录,那么最好的方法是什么?Cookie/会话等

谢谢


大卫看起来像是在重新发明轮子。已经在处理您的案例,并且在
web.XML
(定义一个servlet过滤器)中只有几行XML和一些基本配置,它将限制对选定URL的访问,提供登录/注销屏幕,处理用户存储和HTTP会话管理

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

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

看。现在似乎也有了很大的吸引力


如果出于某种原因,您不想在堆栈中引入Spring安全性,Spring MVC是实现横切安全逻辑的好地方。您可以访问原始请求和响应,因此可以发现URL并检查HTTP会话。

如果您没有为此使用spring security,我建议您查找并使用它。使用spring security可以更轻松地执行以下操作:

使用:截取url查看。一旦配置,它允许您执行以下操作

<sec:authorize access="hasRole('user')">
    Only logged in users will see this.
</sec:authorize>

只有已登录的用户才会看到这一点。