tomcat安全机制j_security_check(简单版)

参考: 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_usernamej_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值