JFinal学习笔记(三) 过滤器实现用户登录验证
2015-09-01 19:50
585 查看
之前由于本人沉迷星际不能自拔导致博客长期没有更新,只能说玩物丧志啊。
这一篇文章按照之前的计划将开始说明jfinal中过滤器的使用方法,并介绍如何通过过滤器来实现用户登录情况的验证。
首先说明一下为什么要进行登录验证,以上一篇文章中的用户登录为例,正常情况用户应该是先访问http://localhost:8080/jfinal_tomcat/如下图所示。
在该页面下输入用户名和密码通过验证后才能跳转至http://localhost:8080/jfinal_tomcat/manage页面,如下图所示。
但是如果用户已经知道了http://localhost:8080/jfinal_tomcat/manage的地址,在不登录的情况下直接在地址栏中输入这个地址并进行访问会怎么样呢,在上一篇文章给出的例子中将会出现这样的情况,如下图所示。
从图中可以看出用户可以对http://localhost:8080/jfinal_tomcat/manage的地址对应的网页进行访问,只是因为没有登录所以用户名显示为null而已,这显然是我们不希望看到的。为了解决这个问题我们就需要通过自定义过滤器的方法来对进行访问的用户进行过滤。而在jfinal中开发者可以通过实现Interceptor接口的方法来快速的实现自定义过滤器的功能,具体步骤如下。
首先请按照前两篇文章介绍的方法完成jfinal的基本配置和用户登录的实现,然后新建一个MyInterceptor类,该类需要实现jfinal框架中的Interceptor接口,并实现接口中的intercept方法。然后在intercept方法中实现具体的过滤条件。这里通过检查session中是否存储的用的nickname来判断当前用户是否已登录,因为之前在login中当用户登录成功后会在session中保存用户的nickname,具体参考第二篇文章中的代码。如果当前session中有nickname的数据则判断当前用户是已登录的,则允许继续访问,如果nickname为空,则停止当前访问,并跳转至登录页面让用户登录,具体代码如下。
其中ai.getController().redirect("/");语句是用来实现跳转的,参数是相对于网站首页地址的相对地址,因为这里的登录页及首页所以直接打"/"就可以了,然后在对IndexController类进行修改,在manage方法前加上@Before(MyInterceptor.class),具体代码如下。
这样就完成了用户登录验证的设置,下面进行具体的测试。首先在不输入用户名密码的情况下直接输入登录后的地址http://localhost:8080/jfinal_tomcat/manage,如下图所示。
然后进行跳转,结果页面自动返回到了登录页面,如下图所示。
这样就实现了用户登录情况的验证和过滤。其实过滤器不光可以实现对用户登录情况的验证和过滤,在复杂的系统中还可以实现对用户权限的过滤,通过在过滤方法中判断当前用户是否有进行该操作的权限来实现对用户操作权限的验证和过滤。
关于jfinal中的过滤器暂行就先讲这些,如果后期有新的发现我会再进一步的进行说明,下一篇我会记录一下我通过jfinal并结合uploadify插件来实现图片上传的具体方法。
PS:希望这几天不要再沉迷星际了!!!
这一篇文章按照之前的计划将开始说明jfinal中过滤器的使用方法,并介绍如何通过过滤器来实现用户登录情况的验证。
首先说明一下为什么要进行登录验证,以上一篇文章中的用户登录为例,正常情况用户应该是先访问http://localhost:8080/jfinal_tomcat/如下图所示。
在该页面下输入用户名和密码通过验证后才能跳转至http://localhost:8080/jfinal_tomcat/manage页面,如下图所示。
但是如果用户已经知道了http://localhost:8080/jfinal_tomcat/manage的地址,在不登录的情况下直接在地址栏中输入这个地址并进行访问会怎么样呢,在上一篇文章给出的例子中将会出现这样的情况,如下图所示。
从图中可以看出用户可以对http://localhost:8080/jfinal_tomcat/manage的地址对应的网页进行访问,只是因为没有登录所以用户名显示为null而已,这显然是我们不希望看到的。为了解决这个问题我们就需要通过自定义过滤器的方法来对进行访问的用户进行过滤。而在jfinal中开发者可以通过实现Interceptor接口的方法来快速的实现自定义过滤器的功能,具体步骤如下。
首先请按照前两篇文章介绍的方法完成jfinal的基本配置和用户登录的实现,然后新建一个MyInterceptor类,该类需要实现jfinal框架中的Interceptor接口,并实现接口中的intercept方法。然后在intercept方法中实现具体的过滤条件。这里通过检查session中是否存储的用的nickname来判断当前用户是否已登录,因为之前在login中当用户登录成功后会在session中保存用户的nickname,具体参考第二篇文章中的代码。如果当前session中有nickname的数据则判断当前用户是已登录的,则允许继续访问,如果nickname为空,则停止当前访问,并跳转至登录页面让用户登录,具体代码如下。
package Config; import javax.servlet.http.HttpSession; import com.jfinal.aop.Interceptor; import com.jfinal.core.ActionInvocation; public class MyInterceptor implements Interceptor { @Override public void intercept(ActionInvocation ai) { // TODO Auto-generated method stub HttpSession session = ai.getController().getSession(); if(session == null){ ai.getController().redirect("/"); } else{ String nickname = (String) session.getAttribute("nickname"); if(nickname != null) { //System.out.println("hello"); } else { ai.getController().redirect("/"); } } } }
其中ai.getController().redirect("/");语句是用来实现跳转的,参数是相对于网站首页地址的相对地址,因为这里的登录页及首页所以直接打"/"就可以了,然后在对IndexController类进行修改,在manage方法前加上@Before(MyInterceptor.class),具体代码如下。
@Before(MyInterceptor.class) public void manage() { render("manage.jsp"); }
这样就完成了用户登录验证的设置,下面进行具体的测试。首先在不输入用户名密码的情况下直接输入登录后的地址http://localhost:8080/jfinal_tomcat/manage,如下图所示。
然后进行跳转,结果页面自动返回到了登录页面,如下图所示。
这样就实现了用户登录情况的验证和过滤。其实过滤器不光可以实现对用户登录情况的验证和过滤,在复杂的系统中还可以实现对用户权限的过滤,通过在过滤方法中判断当前用户是否有进行该操作的权限来实现对用户操作权限的验证和过滤。
关于jfinal中的过滤器暂行就先讲这些,如果后期有新的发现我会再进一步的进行说明,下一篇我会记录一下我通过jfinal并结合uploadify插件来实现图片上传的具体方法。
PS:希望这几天不要再沉迷星际了!!!
相关文章推荐
- php 过滤器实现代码
- PHP过滤器的实现方法第1/2页
- jQuery可见性过滤器:hidden和:visibility用法实例
- JQuery 选择器、过滤器介绍
- 传智播客java web 过滤器
- asp.net使用ODP即oracle连接方式的的防注入登录验证程序
- Servlet 过滤器详细介绍
- Java实现循环体的过滤器的方法
- php自动注册登录验证机制实现代码
- PHP内置过滤器FILTER使用实例
- ASP.NET过滤器的应用方法介绍
- AngularJS基础知识笔记之过滤器
- JSP用过滤器解决request getParameter中文乱码问题
- 详解Django中的过滤器
- 在Django框架中自定义模板过滤器的方法
- AngularJS中的过滤器使用详解
- JFinal Dao 集成到 Spring
- JFinal常见问题汇总
- 使用Freesql简单地实现多条件查询
- JFinal使用Freemarker作为展示层中的国际化配置使用