web项目中基本的初级安全退出操作

Posted 小智RE0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web项目中基本的初级安全退出操作相关的知识,希望对你有一定的参考价值。


案例:在成功登入一个系统后,需要安全退出操作;

退出时同时会销毁 session 对象;且退出前有提示 (是否退出.)


按钮和链接均可实现功能;注意点击的链接不是立即跳出页面;

  • LoginServlet_loginandlogout
//使用注解方式配置servlet
@WebServlet(name = "login",urlPatterns = "/login")
public class LoginServlet_loginandlogout extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //处理 success_and_logout.jsp 中 JS的logout方法中选择了确定退出;

        //获取到session对象; 直接调用强制销毁会话的方法;
        req.getSession().invalidate();
        //重定向到登录页面;
        resp.sendRedirect("login.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置请求编码格式;
        req.setCharacterEncoding("utf-8");
            //获取页面中对应name的值;
            String account = req.getParameter("account");
            String password = req.getParameter("password");

            //创建session对象;
             HttpSession session;

            //由于未连接数据库;这里仅仅是用equals方法进行了判断;
            if (account.equals("张三") && password.equals("123456")) {
                //从请求对象中获取对应的session对象;
                session = req.getSession();
                //将上面获取到的account的值设置给名为 name的属性;(以键值对的形式);
                session.setAttribute("name",account);
                //若符合条件,则重定向到页面LoginSuccess.jsp;
                resp.sendRedirect("success_and_logout.jsp");
            } else {
                //从请求对象中获取对应的session对象;
                session=req.getSession();
                //设置属性名为 errorMsg 的值为 "账号或密码错误!"
                session.setAttribute("errorMsg", "账号或密码错误!");
               //将页面重定向到login.jsp;
                resp.sendRedirect("login.jsp");
            }
       }
}
  • 登录页面login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<div>
    <%--获取到session对象中属性名为 errorMsg 的值 ;若不存在,则返回 null--%>
    <%--此时获取到的session对象和客户端访问服务器的是同一个;(都在同一个浏览器)--%>
<%
    String errorMsg =(String) session.getAttribute("errorMsg");
    out.print(errorMsg+"<br/>");

%>
</div>
<form action="login" method="post">
    账号:<input type="text" name="account"/><br/>
    密码:<input type="password" name="password"/><br/>
    <input type="submit" value="登录"/>
</form>
</body>
</html>
  • 登录成功页面success_and_logout.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功</title>
    <script type="text/javascript">
        function logout() {
            var result = confirm("确定退出?");
            //取到的result是布尔值;
            if(result){
             //使用replace方法获取一个url;	可用一个新页面取代当前页面。这里默认请求方式为 get;
             location.replace("login");
            }
        }
    </script>
</head>
<body>
欢迎用户
<%
    out.print(session.getAttribute("name"));
%>

<input type="button" value="安全退出的按钮" onclick="logout()"/><br/>

<%--注意超链接页面指向空的问题;会刷新当前页面;需要处理--%>
<%--javaScript:void(0) 需要触发事件而不需要返回值;不让该a标签发生跳转;--%>
<a href="javaScript:void(0)" onclick="logout()">安全退出链接</a>
</body>
</html>

  • 启动服务器

  • 输入正确用户名密码后重定向进入success_and_logout.jsp页面;

  • 点击退出按钮

  • 重定向到登录页面login.jsp

  • 再次输入,试用安全退出链接的效果

  • 重定向到登录页面;


以上是关于web项目中基本的初级安全退出操作的主要内容,如果未能解决你的问题,请参考以下文章

rancher初级(搭建+基本操作+web应用部署)

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

2016-2017-1 20155215 信息安全技术 补课上测试

ThinkPHP项目笔记之登录,注册,安全退出篇

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

[AndroidStudio]_[初级]_[配置自动完成的代码片段]