JEECG登陆全过程
登录全过程
配置的过滤器:
类型 | 名称 | 类 | Url匹配规则 | 备注 |
Filter | openSessionInViewFilter | OpenSessionInViewFilter | *.do | 用来控制Hibernate的Session,根据请求开启和关闭 |
encodingFilter | CharacterEncodingFilter | /* | 字符集过滤器统一字符集编码为UTF-8 | |
druidWebStatFilter | WebStatFilter | 在该过滤器中配置Web应用和Druid数据源之间的管理关联监控统计 |
在登陆初始化控制器LoginController中定义了登录信息校验、管理员信息初始化、用户登录、用户菜单初始化等逻辑。
登录时action的路径为loginController.do?checkuser、loginController.do?login
在输入用户名、密码、验证码后执行执行登录操作
js代码如下:
- //登录处理函数
- function Login() {
- setCookie();
- var actionurl=$('form').attr('action');//提交路径
- var checkurl=$('form').attr('check');//验证路径
- var formData = new Object();
- var data=$(":input").each(function() {
- formData[this.name] =$("#"+this.name ).val();
- });
- $.ajax({
- async : false,
- cache : false,
- type : 'POST',
- url : checkurl,// 请求的action路径
- data : formData,
- error : function() {// 请求失败处理函数
- },
- success : function(data) {
- var d = $.parseJSON(data);
- if (d.success) {
- loginsuccess();
- setTimeout("window.location.href='"+actionurl+"'", 1000);
- } else {
- if(d.msg == "a"){
- $.dialog.confirm("数据库无数据,是否初始化数据?", function(){
- window.location = "init.jsp";
- }, function(){
- //
- });
- } else
- showError(d.msg);
- }
- }
- });
- }
首先会请求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),该表中查询出该用户所拥有的所有的角色,根据查询出的用户角色关系列表,获取该用户拥有权限的一级菜单列表。然后在根据用户设置的主题风格跳转到不同的主页面。
热门文章
- 宠物用品一件代发网站有哪些品牌(宠物用品一件代发进货渠道)
- 「3月20日」最高速度20.8M/S,2025年Hiddify Next每天更新免费节点订阅链接
- 宠物医院乱收费!打什么电话可以投诉(宠物医院乱收费!打什么电话可以投诉他)
- Java 带参数与带返回值的方法的定义和调用_java_
- 全国兽药50强企业名单公布时间(全国兽药50强企业名单公布时间最新)
- 浅谈c++的命名空间(namespace)
- 做梦梦见抱别的女人什么意思啊(做梦梦见抱别的女人什么意思啊周公解梦)
- 「3月19日」最高速度20.1M/S,2025年Hiddify Next每天更新免费节点订阅链接
- 宠乐康动物医院电话(宠乐康宠物医院怎么样)
- 符合动物医院法定条件是什么意思呀(政府动物医院)