Spring+MyBatis实践——登录与权限控制
来源:互联网 发布:php高级培训 编辑:程序博客网 时间:2024/05/21 06:56
Spring+MyBatis实践——登录与权限控制
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 <strong>doFilter</strong>(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- if(<strong>httpServletRequest.getSession().getAttribute(CrazySnailConstants.USER)!=null</strong>){ //判断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实践——登录与权限控制
- springboot-shrio-mybatis登录验证与权限控制
- shiro-springmvc-mybatis登录认证 权限控制
- 权限管理最佳实践:一,登录控制
- Spring+SpringMVC+Mybatis+shiro权限登录管理
- spring+mybatis基础上添加shiro权限控制
- Spring security实现登录验证+权限控制
- Java Server 理解与实践 —— 集成Mybatis到Spring项目
- Spring与mybatis的整合实践
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring mvc 实现网站登录与非登录的控制
- spring mvc 实现网站登录与非登录的控制
- spring mvc 实现网站登录与非登录的控制
- c#类,封装了键盘,和鼠标模拟,和内存读取
- 1049. Counting Ones (30)
- 基于Pushlet实现的Web版报价系统
- 基础算法系列(一)查找算法之顺序查找
- Appium根据xpath获取控件实例随笔
- Spring+MyBatis实践——登录与权限控制
- android sdk下载链接地址
- Python多线程使用需警惕
- printk 函数
- C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密
- php 利用ssh执行远程或本地liunx服务器命令
- 安卓环形菜单(处理了菜单键和返回键+加入了动画)
- Android进程的内存管理分析
- C# Image 加载图片