登录全过程

配置的过滤器:

类型

名称

Url匹配规则

备注

Filter

openSessionInViewFilter

OpenSessionInViewFilter

*.do

用来控制Hibernate的Session,根据请求开启和关闭

encodingFilter

CharacterEncodingFilter

/*

字符集过滤器统一字符集编码为UTF-8

druidWebStatFilter

WebStatFilter

在该过滤器中配置Web应用和Druid数据源之间的管理关联监控统计

在登陆初始化控制器LoginController中定义了登录信息校验、管理员信息初始化、用户登录、用户菜单初始化等逻辑。

登录时action的路径为loginController.do?checkuser、loginController.do?login

在输入用户名、密码、验证码后执行执行登录操作

js代码如下:

[javascript] view plain copy
  1. //登录处理函数
  2. function Login() {
  3. setCookie();
  4. var actionurl=$('form').attr('action');//提交路径
  5. var checkurl=$('form').attr('check');//验证路径
  6. var formData = new Object();
  7. var data=$(":input").each(function() {
  8. formData[this.name] =$("#"+this.name ).val();
  9. });
  10. $.ajax({
  11. async : false,
  12. cache : false,
  13. type : 'POST',
  14. url : checkurl,// 请求的action路径
  15. data : formData,
  16. error : function() {// 请求失败处理函数
  17. },
  18. success : function(data) {
  19. var d = $.parseJSON(data);
  20. if (d.success) {
  21. loginsuccess();
  22. setTimeout("window.location.href='"+actionurl+"'", 1000);
  23. } else {
  24. if(d.msg == "a"){
  25. $.dialog.confirm("数据库无数据,是否初始化数据?", function(){
  26. window.location = "init.jsp";
  27. }, function(){
  28. //
  29. });
  30. } else
  31. showError(d.msg);
  32. }
  33. }
  34. });
  35. }

首先会请求checkurl,去进行用户信息的校验,校验成功后请求actionurl执行登录操作。

校验和登录操作都是在登录控制器LoginController中实现的。

在类LoginController中的checkuser来完成验证任务

验证码校验:request参数中取到验证码randCode,校验该验证码是否为空,是否和session中存放的一致。如果为空或者不一致,会返回异常信息到页面,在页面显示。

用户信息校验:在POST数据中取出用户凭证即参数中的TUser user。首先会去查询系统用户父类表t_s_base_user及系统用户表t_s_user中是否有数据,来判断数据库有无数据,来提示用户是否初始化数据库。(每个用户登录都要去查询出用户表中的所有操作进行校验,该步校验操作当系统用户量大时,大量的数据库查询操作会对系统性能有很大影响,建议加个条件判断,或者使用缓存技术,对查询的数据进行缓存,以减少没必要的数据库操作。)。

在校验完数据库中是否有数据后,就进行了用户信息的校验,在用户信息校验时只进行了用户是否存在和密码匹配的校验,并没有进行其它信息的校验。(在进行登录校验时可以增加账户锁定检查、ip锁定检查(是否超过最大登录次数)、指定时间登录检查、指定ip登录限制检查(ip不允许登录)、用户登录审计(密码重试次数超过限定次数)等校验,使校验逻辑更加严谨)。

在进行完数据校验后记录登录成功日志,返回验证成功信息。前台js方法//登录处理函数function login(){}接收到返回的登录成功信息后,执行loginController.do?login的跳转,在这里对用户的权限进行判断,用以展现用户拥有权限的菜单。

JEECG的用户权限模型使用的是基于角色的访问控制模型,角色就是一个或一群用户在组织内可执行的操作的集合。

RBAC的主要思想是将用户与角色关联,角色与访问权限关联,通过给用户分配适合的角色,让用户与访问权限相联系。用户自己不能进行自主授权和权限转移,必须通过角色来传递授权信息实现访问控制。由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢的多,减小了授权管理的复杂性,降低了管理开销。

RBAC基本模型主要由四个要素构成:用户、角色、权限和会话。

每个Session是一个映射,一个用户到多个role的映射。当一个用户激活他所有角色的一个子集的时候,建立一个session。每个Session和单个的user关联,并且每个User可以关联到一个或多个Session。

根据该权限模型,用户登录系统后,系统会根据登录的用户的用户id去查询用户角色关联表(t_s_role_user),该表中查询出该用户所拥有的所有的角色,根据查询出的用户角色关系列表,获取该用户拥有权限的一级菜单列表。然后在根据用户设置的主题风格跳转到不同的主页面。

JEECG登陆全过程相关推荐

  1. java手机验证码登陆_在Web项目中手机短信验证码实现的全过程记录

    这篇文章主要给大家介绍了关于在Web项目中实现短信验证码的全过程记录,文中通过示例代码介绍的非常详细,在文末跟大家提供了源码下载,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧. 前言 最近在做 ...

  2. 根据PSD登陆页面设计稿切图制作HTML网页全过程

    切图的目的是把PSD设计稿转换为HTML页面.记得自己当时学习切图时,网上切图相关的文章是不少,但是大都是讲怎么使用切片工具把一张图片分割成多张图片,然后存储为Web使用格式,并且都比较简单和零碎,并 ...

  3. (原创)Openwrt路由器Post登陆校园网全过程(后续再补)

    我是非常厌烦学校校园网的iptable,每次上网都要输入账号密码,而且IP池租期又短才十几分钟.所以我就想有没有什么方法可以跳过这个过程.我一想,POST肯定避免不了的的,如果用电脑去实现这个过程,我 ...

  4. RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程(转)

    RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程 一.准备工作:SSH,telnet终端中文显示乱码解决办法vi /etc/sysconfig/ ...

  5. ESXi安装全过程及基本配置

    ESXi安装全过程 在网上逛了一圈,发现没什么人介绍关于ESXi的安装方法,虽然我们可以直接在官网上下载相关的资料,但还是有部分人看不懂,今天我就来介绍一下安装方法及基本的配置. 由于我将会在VMwa ...

  6. HTML+MYSQL+PHP搭建带有cookie的登陆页面

    这周学长给我们布置了新任务,要让我们在一周内搭建一个带有cookie的登陆界面,任务很轻松(才怪),几经波折之后终于弄好了(呜呜呜~),下面总结一下过程. 在本地搭建一个带有cookie的登陆注册界面 ...

  7. jeecg开源项目的IDEA的部署

    JEECG采用了SpringMVC + Hibernate + Minidao(类Mybatis) + Easyui(UI库)+ Jquery + Boostrap + Ehcache + Redis ...

  8. 【支付宝服务窗】JEECG支付宝服务窗平台指南

    一. 支付宝服务窗的申请与准备工作: 申请详见官方文档: 1. 使用RSA密钥生成工具生成相关的公钥. a) 密钥生成工具下载地址,点击下载 b) 使用工具生成密钥: 在工具目录当中也会生成三个pem ...

  9. Jeecg入门篇,高手掠过

    本帖最后由 jueyue 于 2014-4-7 22:25 编辑 高手可以掠过,这个只是jeecg的开篇介绍,介绍些设置 忘记了,这个才是首先 这个文件是代码生成器的入口,右键run运行就可以了 首先 ...

  10. 开发指南专题四:JEECG微云快速开发平台--JEECG开发环境搭建

    开发指南专题四:JEECG微云快速开发平台开发环境搭建 1. JEECG开发环境搭建 JEECG推荐的开发环境为Myeclipse8.5/Eclipse3.7+JDK1.6+Tomcat6.0 1.1 ...

最新文章

  1. 配置中心Apollo的设计原理
  2. android 锁屏
  3. 交流经过整流桥后的电压计算方法(不权威)
  4. UIGraphicsBeginImageContext系列知识
  5. Java.util.Date.getTime()出现负数的问题
  6. 数据仓库、商业智能的体系结构
  7. LeetCode 1305. 两棵二叉搜索树中的所有元素(二叉树迭代器)
  8. 论文学习20-End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF(序列标注,2016ACL
  9. [Git]4.2 标签
  10. Python生成requirements.txt方法
  11. 探秘HDR:西瓜、抖音是如何做到让视频的画质堪比影院大片的?
  12. android手机误删通讯录恢复
  13. 微软Azure云服务故障超过24小时,原因竟是——被雷劈了
  14. js设计模式之单例模式
  15. 如何利用官方SDK文件来辅助开发?
  16. 监控系统选型,一文轻松解决
  17. [PS] 透明底图片制作
  18. 小米商城网页版(js+css)
  19. 蓝桥杯 结果填空 猜生日
  20. SPI与IIC的异同

热门文章

  1. Mac上mysql默认端口那件事
  2. linux安装Telnet工具
  3. entsel约束条件lisp_autocad-plugin
  4. IDEA格式化SQL代码
  5. JUC总览,来自汪文君整理
  6. ORACLE 查询表空间使用情况
  7. 对 PInvoke 函数的调用导致堆栈不对称问题
  8. USB免驱NFC读写器 Android系统中NFC读写范例
  9. HTML框架分析及应用
  10. protues仿真——元件改造