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/的路径进行了过滤,进行权限验证,进而实现简单的权限控制功能。

Spring+MyBatis实践—登录和权限控制的更多相关文章

  1. Spring Boot 2.X(十八):集成 Spring Security-登录认证和权限控制

    前言 在企业项目开发中,对系统的安全和权限控制往往是必需的,常见的安全框架有 Spring Security.Apache Shiro 等.本文主要简单介绍一下 Spring Security,再通过 ...

  2. 学习MVC之租房网站(六)-用户登录和权限控制

    在上一篇<学习MVC之租房网站(五)-权限.角色.用户管理>完成了权限.角色.用户的增删改查,现在将基于前面完成的内容,进行后台用户登录和权限控制功能的开发. 一.用户登录 用户登录涉及到 ...

  3. 手工搭建基于ABP的框架(3) - 登录,权限控制与日志

    为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7695258.html 本篇将实现登录.权限控制.日志配置与审计日志的功能.首先我 ...

  4. spring security 3.1 实现权限控制

    spring security 3.1 实现权限控制 简单介绍:spring security 实现的权限控制,能够分别保护后台方法的管理,url连接訪问的控制,以及页面元素的权限控制等, secur ...

  5. Spring+MyBatis实践—MyBatis数据库访问

    关于spring整合mybatis的工程配置,已经在Spring+MyBatis实践—工程配置中全部详细列出.在此,记录一下几种通过MyBatis访问数据库的方式. 通过sqlSessionTempl ...

  6. Token认证登录以及权限控制

    IdentityServer4实现Token认证登录以及权限控制   相关知识点 不再对IdentityServer4做相关介绍,博客园上已经有人出了相关的系列文章,不了解的可以看一下: 蟋蟀大神的: ...

  7. Spring Security实现统一登录与权限控制

    1  项目介绍 最开始是一个单体应用,所有功能模块都写在一个项目里,后来觉得项目越来越大,于是决定把一些功能拆分出去,形成一个一个独立的微服务,于是就有个问题了,登录.退出.权限控制这些东西怎么办呢? ...

  8. 七、spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制

    1.安装cas-server-3.5.2 官网:https://github.com/apereo/cas/releases/tag/v3.5.2 下载地址:cas-server-3.5.2-rele ...

  9. Spring Boot 之 RESRful API 权限控制

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “简单,踏实~ 读书写字放屁” 一.为何用RESTful API 1.1 RESTful是什么? ...

随机推荐

  1. Linux - 查看用户登录记录

    有关用户登录的信息记录在 utmp(/var/run/utmp).wtmp(/var/log/wtmp).btmp(/var/log/btmp) 和 lastlog(/var/log/lastlog) ...

  2. 使用 Spring 2.5 基于注解驱动的 Spring MVC

    http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/ 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sp ...

  3. VS2015+AngularJS+Ionic开发

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  4. eclipse怎么切换SVN的用户

    在用eclipse的时候会经常用到SVN来进行代码的版本控制,为了方便起见,我们会保存密码,从此之后就不会再出现输入或者修改用户名和密码的地方了,这时候想切换用户怎么办,在本地操作的一种方法是删除SV ...

  5. WCF与Web API 区别(应用场景)

    Web api  主要功能: 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作 请求的回 ...

  6. table表格中加入<a>标签,使内容上下居中的方法。

    主要思路:定义好表格单元格的width和height,再加入<a>后,设置<a>的width=100%,height=100%填充整个单元格.那么此时设置上下左右居中样式就只需 ...

  7. Mysql的联合查询

    联合查询 union联合查询 语法:     select 语句 union [all|distinct] select 语句; 示例: 特点:     条件:两表的查询出来的字段数目必须相同     ...

  8. 学习C++ Primer 的个人理解(八)

    结束了第一部分,在最后的第七章,我只简单的总结了一下,因为后面还会更详细的说明有关类的内容.而且说实在的这一张的内容让我很不舒服,验证了本书实际上有许多内容是作者的学生一起拼凑而成的.第七章结构给我感 ...

  9. LevelDb原理剖析

    在说LevelDb之前,先认识两位大牛,Jeff Dean和Sanjay Ghemawat,这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二. Jeff Dean其人: ...

  10. OpenJudge/Poj 1159 Palindrome

    1.链接地址: http://bailian.openjudge.cn/practice/1159/ http://poj.org/problem?id=1159 2.题目: Palindrome T ...