声明式安全(1)——基于表单的验证

一、步骤

  1. 设置用户名、密码和角色
  2. 告诉服务器目前正在使用基于表单的验证。指定login页面和login-error页面
  3. 创建登陆页面和登陆失败页面
  4. 指定要保护的URL
  5. 列出可以访问的角色
  6. 指定哪些URL只能通过SSL访问
  7. 禁用invoker servlet

二、实例

  1. 将D:\Test\Servers\Tomcat v6.0 Server at localhost-config/tomcat-users.xml文件当中的
    <tomcat-users> 
    <role rolename="tomcat"/>
      <role rolename="role1"/>
      <user password="tomcat" roles="tomcat" username="tomcat"/>
      <user password="tomcat" roles="tomcat,role1" username="both"/>
      <user password="tomcat" roles="role1" username="role1"/>
    </tomcat-users>注释去掉,这样我们就有了tomcat和role1这两个角色,同时三个用户。
  2. 在web.xml文件当中加入如下代码:
    我们要保护的资源
    <security-constraint>
    <web-resource-collection>
    <web-resource-name>ssl</web-resource-name>
    <url-pattern>/ssl/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
    <role-name>tomcat</role-name>
    </auth-constraint>
    <!-- <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>  -->
    </security-constraint>

    声明能够访问这些资源的角色
    <security-role>
    <role-name>tomcat</role-name>
    </security-role>

    告诉服务器使用表单验证
    <login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
    <form-login-page>/admin/login.jsp</form-login-page>
    <form-error-page>/admin/login-error.html</form-error-page>
    </form-login-config>
    </login-config>
  3. 创建login.jsp和login-error.html页面。login-error.html简单提示登录错误即可。其中login页面如下。
    <%@ page language="java" pageEncoding="UTF-8"%>
    <%
    response.setHeader("Cache-Control", "no-store,no-cache");
    response.setHeader("Pragma", "no-cache");
    response.setDateHeader("Expires", -1);
    if (request.getRemoteUser() != null) {
    response.sendRedirect("/admin/login.jsp");
    }
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Login</title>
    </head>
    <body>
    <center>
    <h1>Login</h1>
    <form action="j_security_check" method="post">
    <table>
    <tr>
    <td>User name: <input type="text" name="j_username" />
    <tr>
    <td>Password: <input type="password" name="j_password" />
    <tr>
    <th><input type="submit" value="Log In" />
    </table>
    </form>
    </center>
    </body>
    </html>
  4. 在ssl文件夹下建立要访问的页面即可

三、说明

声明式安全是基于服务器的安全,其对于servlet和jsp也完全透明的,servlet和jsp页面无需任何改动。用户登录不成功时返回403
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值