1、实现用户登录功能;
通过session来实现用户登录功能。在用户登录时,将用户的相关信息放在HttpSession对象用,其中HttpSession对象可以通过HttpServletRequest的getSession方法获得。同时,HttpSession对象对应Jsp内置对象session,在jsp页面中也可以通过session来访问,如通过jstl标签库来访问session中的内容:
<c:if test="${sessionScope.username == null}"> <p class="navbar-text navbar-right"> <a href="./getLoginPage" class="navbar-link">登录</a></p> </c:if>
通过判断session中的username是否为null,来决定是否显示标签p。
登录功能实现代码;
@RequestMapping(value="/login", method=RequestMethod.POST) public String login(HttpServletRequest request, User user){ if(userService.validateUser(user)){ //验证用户名、密码是否匹配 request.getSession().setAttribute(CrazySnailConstants.USER, user.getEmail()); //若匹配,则存放到session中 return "index"; } request.getSession().setAttribute("errormsg", "邮箱、密码不匹配,请重新输入"); return "login"; //登录失败,返回登录页面 }
注:session数据是放在服务器上的,因而每次重新启动Tomcat时,session数据会被清空,需要重新登录。
2、通过Filter实现用户权限控制;
通过在web.xml中配置Filter来对特定的用户请求进行过滤,判断当前session中是否存在用户登录的相关数据,若存在相关数据,则允许访问;否则提示用户登录。
另外,tomcat默认配置中,session的默认有效期为30分钟,可通过查看apache-tomcat-7.0.53\conf\web.xml进行查看。也可以通过在web.xml中通过<session-config>来配置session的有效期。
<session-config> <session-timeout>30</session-timeout> <!-- 时间单位为分钟 --> </session-config>
tomcat的会话超时可以在多个级别上设置:tomcat实例级别、Web应 用级别、servlet级别以及运行时Context代码级别。较低级别的设定会覆盖较高级别的设定。一般常用的是在前面两个级别上设置,分别在 /conf/web.xml和/webapps/yourapp/WEB-INF/web.xml。
权限控制实现:
首先,过滤器类的实现;
package com.crazysnail.filter; public class AuthenFilter implements Filter{ private static Logger logger = Logger.getLogger(AuthenFilter.class); @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) request; if(httpServletRequest.getSession().getAttribute(CrazySnailConstants.USER)!=null){ //判断session中是否存在用户登录的相关数据 chain.doFilter(request, response); }else{ httpServletRequest.getRequestDispatcher("./loginfail").forward(request, response); //若不存在,则提示用户登录失败 } } @Override public void init(FilterConfig arg0) throws ServletException { } }
自定义过滤器类时,需要实现Filter接口,其中过滤机制的实现是在doFilter方法中。
其次,在web.xml中添加过滤器配置;
<!-- 用户权限控制 --> <filter> <filter-name>authenFilter</filter-name> <filter-class>com.crazysnail.filter.AuthenFilter</filter-class> </filter> <filter-mapping> <filter-name>authenFilter</filter-name> <url-pattern>/user/*</url-pattern> </filter-mapping>
该过滤器,对URL路径中包含/user/的路径进行了过滤,进行权限验证,进而实现简单的权限控制功能。
相关推荐
本系统设计综合应用Java所学知识开发一个基于SSM(Sping+Spring MVC+MyBatis)框架的校园宽带业务管理系统 项目参考自[基于SSM+layui的汽车出租项目] ### 系统功能 - [x] 用户登录 - [x] 菜单导航 - [x] RABC管理...
加入了是否可以新增、修改、删除判断,后端根据当前登录人的所属部门赋予权限; 列表中如果觉得授权的部门存在当前登录的所属部门,则可往下新增,及操作对应子级,否则没有增删改操作。 用户管理 加入了判断,如果...
管理系统系列--【基于shiro的权限管理系统——分布式版】一个用spring、mybatis、redis和shir
基于角色的权限访问控制RBCA(Role-Based Access Control) Spring+Springmvc+Mybatis三大框架 Ajax技术 springmvc文件上传 shiro安全框架 Redis缓存 JavaMail邮件 基于aop切面的日志管理 Layui前端框架 登录验证码 ...
后台框架:Spring、SpringMVC、MyBatis UI界面:BootStrap、H-ui 、JSP 数据库:MySQL 运行环境: JDK 8 Eclipse Tomcat 7.0 MySQL 5.5 三、系统功能 系统分为前台订餐和后台管理: 1.前台订餐 用户注册...
本系统设计综合应用Java所学知识开发一个基于SSM(Sping+Spring MVC+MyBatis)框架的校园宽带业务管理系统。 开发工具:idea Navicat mysql 将项目导入idea中,修改数据库配置参数,将数据库导入Navicat中,启动项目...
我在菜单栏用了shiro标签对菜单进行控制,根据登录用户的不同,显示不同的菜单和操作按钮。 新接触的Layui的表单可以说是非常实用了,但是我用ehcache缓存对list集合进行缓存时,layui的表格分页功能就会失效(比如...
项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用tk_Mybatis,同时引入了通用Mapper和PageHelper插件,可快速高效的对单表进行增删改查...
本次毕业设计项目——校园美食交流系统,是一款基于SSM框架(Spring+SpringMVC+MyBatis)后端开发与Vue前端框架相结合的综合性校园服务平台。该系统旨在为校园内的师生提供一个集美食分享、交流、点评与推荐为一体的...
我在菜单栏用了shiro标签对菜单进行控制,根据登录用户的不同,显示不同的菜单和操作按钮。 新接触的Layui的表单可以说是非常实用了,但是我用ehcache缓存对list集合进行缓存时,layui的表格分页功能就会失效(比如...
Spring Boot 2.0.4 & Shiro1.4.0 权限管理系统。 文章地址:https://xttblog.blog.csdn.net/article/details/88353878 FEBS是一个简单高效的后台权限管理系统。项目基础框架采用全新的Java Web开发框架 —— Spring ...
项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0.4,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,可快速高效的对单表进行增删改查操作...
安全框架采用Spring Security 5.0.7,可实现对按钮级别的权限控制,并集成了社交账户登录(QQ和微信)以及手机验证码登录;前端页面使用Bootstrap构建,主题风格为时下Google最新设计语言Material Design,并提供多...
一个用spring、mybatis、redis和shiro开发的分布式权限管理系统 Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种...
(分布式与权限) Git,Apache POI,Echarts (版本控制与报表) 腾讯云短信服务,七牛云存储服务,微信开发平台 (第三方服务) ———————————————— 版权声明:本文为CSDN博主「Alkaid..」的原创文章,...
NumberOne SpringBoot 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf、Bootstrap、Hplus),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、...
* 本项目为 Maven 项目,后端使用 Spring 4 + SpringMVC 4 + Mybatis 3.4 + aspectj 1.8 * 实现了一个 **通用mapper**,免写 SQL,可进行单表和多表关联查询,自动插入一对多/多对一对象(注解配置关联对象,结合 ...
本网上二手书店是采用企业应用架构:Spring + SpringMVC + MyBatis的开发架构。网上二手书店运行环境如表所示。 | **项目** | **说明** | | ---------------- | ------------- | | **系统环境** | Windows11 | ...
大学生食堂外卖点餐系统,食堂管理员管理菜品、类别...系统管理员:登录、用户管理、角色管理、系统权限菜单管理等 用户:登录注册、个人中心、地址管理、点餐中心、我的购物车、配送记录查看、优惠劵购买等点餐操作。