tomcat安全机制j_security_check(简单版)
2019独角兽企业重金招聘Python工程师标准>>>
参考: http://www.blogjava.net/asktalk/archive/2005/07/23/8221.html
在web应用中,对页面的访问控制通常通过程序来控制,流程为:
登录 → 设置session → 访问受限页面时检查session是否存在,如果不存在,禁止访问
对于较小型的web应用,可以通过tomcat内置的访问控制机制来实现权限控制。采用这种机制的好处是,程序中无需进行权限控制,完全通过对tomcat的配置即可完成访问控制。
实现:在用户访问受限页面时,如果用户没有登陆则自动跳转到登陆页面,只有通过登陆验证有权限的用户可以访问受限资源。
下面讲如何配置使用:
1.为了在tomcat页面设置访问权限控制,在项目的WEB-INF/web.xml文件中,进行如下设置:
<security-constraint><!--1.被保护的资源 --><web-resource-collection><web-resource-name>testLogin</web-resource-name><url-pattern>/protected/*</url-pattern></web-resource-collection><!--2.有权限的角色 --><auth-constraint><role-name>tian</role-name></auth-constraint></security-constraint><!-- 3.登录方式 --><login-config><auth-method>FORM</auth-method><form-login-config><form-login-page>/login.jsp</form-login-page><form-error-page>/error.jsp</form-error-page></form-login-config></login-config>
其中,<url-pattern>中指定受保护的url,可以使用通配符*,通常对整个目录进行访问权限控制。(例子中指在protected目录下的所有文件都被保护);
<auth-constraint>中指定哪些角色可以访问<url-pattern>指定的url,在<role-name>中可以设置一个或多个角色名。(例子中角色名为tian的角色有访问权限)。
2.使用的角色名来自tomcat的配置文件${CATALINA_HOME}/conf/tomcat-users.xml。 如下所示:
<tomcat-users><role rolename="tomcat"/><role rolename="tian"/><role rolename="manager"/><user name="admin" password="admin" roles="tian,tomcat,manager" /><user name="tian" password="tian" roles="tian,manager" /></tomcat-users>
其中,<role rolename="tian"/>指角色名为tian;
<user name="admin" password="admin" roles="tian,tomcat,manager" />指通过登录名admin和密码admin登陆的用户拥有tian,tomcat,manager这3个角色的权限。
所用角色名也可以自己配置,使用Realm,可以从数据库中获取,下篇《在tomcat中使用Realm》再讲。
3.<login-config>用来设置登录方式;
<auth-method>的取值为BASIC与FORM。如果为BASIC,浏览器在需要登录时弹出一个登录窗口。如果为FORM方式,需要指定登录页面和登录失败时的提示信息显示页面。(例子中使用的登陆方式为FROM表单登陆)
其中的<form-login-page>指定登录页面url,<form-error-page>指定登录失败时的提示页面url。
登录页面中,form的action,以及其中的用户名和密码两个参数的名称,都应取固定的值。登录的后台处理程序为j_security_check;用户名和密码的参数名称分别为:j_username和j_password。
如下是登录页面(如:login.jsp)的一段示例代码:
<form method="post" action='j_security_check' ><label >账号:</label><input name="j_username" type="text"/><br><br><label >密码:</label><input name="j_password" type="password"/><br><br><button id="j_login" type="submit" >登录</button><br></form>
而BASIC的配置如下:
<login-config> <auth-method>BASIC</auth-method>
</login-config>
转载于:https://my.oschina.net/u/2351298/blog/783967
tomcat安全机制j_security_check(简单版)相关推荐
- tomcat升级简单版
tomcat升级简单版 理论上tomcat的升级需要在官网上重新下载之后将旧版本整个替换,并把原webapps文件夹里面的内容拷贝过来,比较麻烦. 说两种简单方式的升级,仅供参考.更新前最好做好备份, ...
- 008 数据结构逆向—数组(简单版)
文章目录 前言 逆向背包数组 一维背包数组 二维背包数组 数组结构分析 总结 前言 对于游戏逆向来说,核心需求其实就只有两个 追踪游戏数据 定位游戏功能call 对于追踪游戏数据来说,单纯从一个寄存器 ...
- 图解Tomcat类加载机制(阿里面试题)
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给 ...
- 课程设计——模仿网易云UI设计基础(超简单版)
本来想把我自己做的东西放出来给你们的,但是解释起来有点难, 所以就先弄出一个简单版本,也就是可以过关的版本. 先上我的版本,如果要弄这种的可以私聊我好吧-0-. 简单版,好像花了3个小时吧.上图. 直 ...
- 游戏服务器设计(C#)简单版
背景 充分利用c#中的task机制,设计高并发,无锁(针对业务逻辑)的服务器架构 gateserver 处理客户端连接.交互的服务器 永久性设计,与游戏项目无关,无需新代码维护 gameserver ...
- 百度Al在线语音合成(简单版)
百度Al在线语音合成(简单版) 1.登录网址 https://ai.baidu.com/tech/speech/tts 点击跳转 2.登录百度账号并创建应用 在应用列表创建新应用:全部默认.应用名称与 ...
- Android简单版天气预报,显示天气预报(第二步)
Android简单版天气预报,显示天气预报(第二步) 接着上一步的:[https://blog.csdn.net/weixin_44889138/article/details/102748057] ...
- 小说下载阅读器_初始简单版
小说下载阅读器_初始简单版 相信园子里面的很多人和我一样喜欢阅读小说,下面是这几年用的比较多一点的阅读器,功能相对完整. Windows本地程序/手机 1.http://www.mybook66.co ...
- JavaWeb笔记(五)后端(Thymeleaf)(Tomcat类加载机制)(编写图书管理系统)
使用Thymeleaf模板引擎 虽然JSP为我们带来了便捷,但是其缺点也是显而易见的,那么有没有一种既能实现模板,又能兼顾前后端分离的模板引擎呢? Thymeleaf(百里香叶)是一个适用于Web和独 ...
最新文章
- mint 15用fcitx框架安装中文谷歌输入法
- mini2440的时钟
- 中石油训练赛 - 奎奎发红包(贪心)
- python数据分析与基础实战_《python数据分析与挖掘实战》基础概念
- OpenCL 与 CUDA
- 我爱计算机视觉干货集锦分类汇总(2019年5月7日)
- electronic-wechat高分屏下的缩放修改
- MongoDB数据库常见问题
- 同余定理在算法求解中的应用
- onConfigurationChanged方法的使用
- 使用js实现移动设备访问跳转到指定目录
- LQR 控制学习-LQR控制 MATLAB官方教程-LQR 控制器_状态空间系统Matlab/Simulink建模分析
- 2021-07-26
- 深入解读OpenSURF中快速黑塞矩阵计算的思想——FastHessian_buildResponseLayer
- JSP作业提交管理系统(JSP作业管理系统)JSP学生作业管理JSP教师作业批改业提交管理系统
- “日不落”的大学数据库原理课程设计——机票预订信息系统
- 修改基于formView的MFC单文档背景颜色
- python flask项目结构_Flask项目结构
- DIB迪博数据库(2000-2018年)
- 马士兵java ppt_[马士兵JAVA教程课件.ppt
热门文章
- 64位内核开发第二讲.内核编程注意事项,以及UNICODE_STRING
- 两数之和,两数相加(leetcode)
- python函数里面,一个*是可变参数的元祖,两个*是可变参数的字典
- Ubuntu系统---以virtualenv方式安装Tensorflow-CPU
- leetcode python 011
- 如何让博客变得稍稍好看
- HtmlAgilityPack 使用
- C#调用SSIS包及读取DataReader目标
- GetWindowText和GetDlgItemText的区别
- 自定义repeater带分页功能的DataGrid(仿PetShop)