设为首页 收藏本站
查看: 839|回复: 0

[经验分享] Spring+MyBatis实践——登录与权限控制

[复制链接]

尚未签到

发表于 2016-11-27 12:21:04 | 显示全部楼层 |阅读模式
  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/的路径进行了过滤,进行权限验证,进而实现简单的权限控制功能。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306208-1-1.html 上篇帖子: Druid监控Mybatis不显示SQL问题 下篇帖子: mybatis学习笔记2-复合类型查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表