Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC:登录和注销功能?_Java_Xml_Spring_Jsp_Spring Mvc - Fatal编程技术网

Java SpringMVC:登录和注销功能?

Java SpringMVC:登录和注销功能?,java,xml,spring,jsp,spring-mvc,Java,Xml,Spring,Jsp,Spring Mvc,我是SpringMVC的新手,需要登录/注销功能方面的帮助。我已经弄清楚了登录部分(我想),但仍然在努力使用注销功能。我是否需要建立会话才能注销用户 控制器Java文件 @RequestMapping(value = "/Login.do") public String Login(@ModelAttribute("searchVO") UserInfoVO searchVO, ModelMap model, HttpServletRequest request) throws Exceptio

我是SpringMVC的新手,需要登录/注销功能方面的帮助。我已经弄清楚了登录部分(我想),但仍然在努力使用注销功能。我是否需要建立会话才能注销用户

控制器Java文件

@RequestMapping(value = "/Login.do")
public String Login(@ModelAttribute("searchVO") UserInfoVO searchVO, ModelMap model, HttpServletRequest request) throws Exception {

    int check = sampleService.loginSample(searchVO);

    String username = request.getParameter("registerUsername");
    String password = request.getParameter("registerPassword");

    if(check>0&&searchVO.getRegisterUsername()!=null){
        return "forward:/Menu.do";
    }

    else{
        return "sample/Login";
    }
}   

登录XML文件

<select id="leagueDAO.loginSample" parameterClass="userinfoVO" resultClass="int">

        SELECT COUNT(*) totcnt
        FROM REGISTER
        WHERE 1=1   
        AND REGISTERUSERNAME =  #registerUsername# 
        AND REGISTERPASSWORD = #registerPassword#

</select>


与登录方法类似,您可以在控制器中创建一个方法来获取会话并使其无效。当用户单击注销时调用此方法。
HttpSession session=request.getSession()

session.invalidate()

在这里,登录时不创建任何会话。您只是在重定向页面。
参照此创建登录和注销:

您使用的是Spring MVC,似乎您正在尝试实现自己的登录和注销功能。相反,我建议使用Spring安全性来处理身份验证

在pom.xml中,将这些添加到dependencies部分

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
      <version>${spring.security.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>${spring.security.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>${spring.security.version}</version>
    </dependency>

org.springframework.security
spring安全内核
${spring.security.version}
org.springframework.security
spring安全配置
${spring.security.version}
org.springframework.security
spring安全网
${spring.security.version}
然后,您可以使用硬编码用户(
auth.inMemoryAuthentication()
)、数据库(
auth.jdbcAuthentication()
)和LDAP等其他方法轻松配置身份验证


创建您自己的身份验证功能会带来巨大的安全风险,我发现这会适得其反,因为您基本上是在尝试重新发明轮子。出于学术或学习目的,尤其是在信息安全方面,这肯定是一个很好的练习。但如果您的目标是从整体上很好地理解Spring,那么也要学习Spring安全性。

我收到了以下错误消息:org.apache.catalina.core.ApplicationDispatcher invoke/Servlet.service()for servlet操作抛出异常/java.lang.StackOverflowerError提供整个stacktrace和导致此错误的代码。如何进行身份验证?对不起,我是一个编程新手。我没有使用spring boot,但我使用的是Maven。您需要做的是设置Maven依赖项,为spring安全性创建配置(在dispatcher-servlet.xml或在侦听器中配置的其他xml中),决定您的用户身份验证方法(内存、jdbc、ldap等),并创建login.html或login.jsp,然后将它们全部绑定到控制器中。
HttpSession session = request.getSession();
session.invalidate();
org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet action threw exception
java.lang.StackOverflowError
at javax.servlet.ServletRequestWrapper.getRemoteAddr(ServletRequestWrapper.java:260)
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
      <version>${spring.security.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>${spring.security.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>${spring.security.version}</version>
    </dependency>