登录的本质

  1. 在登录页面 输入用户名与密码
  2. 后台核对无误后,将用户信息放入会话中
  3. 在访问需要登录的页面时,系统在会话中查找用户信息
  4. 找到了,就放行
  5. 没找到,将页面重定向到登录页面

Java代码如何实现

登录

针对 /login 请求 接收页面的表单信息,即用户名与密码
核对无误, 则将用户信息放入会话
request.getSession().setAttribute(“currentUser”,“tom”);
登录成功

退出

用户点击退出, 后台直接销毁会话即可
request.getSession().invalidate();

权限拦截

之所以登录是某些页面需要用户信息
那在用户没有登录的情况下,不应让用户能访问到这些页面

针对需要 定义一个filter 在doFilter中检查登录用户信息

1
2
3
4
5
6
User user = request.getSession().setAttribute("currentUser");
if(null == user){
  response.sendRedirect("/login");
}else{ // 当user不为空即放行
  chain.doFilter(request, response);
}

登录只是简单区分了登录用户与未登录用户的访问页面
稍微复杂点的系统 则不同用户可访问的页面也是不一样的
这是借助第三方框架更容易实现 spring security, shiro