zoukankan      html  css  js  c++  java
  • 配置web.xml和glassfish容器实现javaEE表单验证

    web.xml配置:

       <!-- 声明用于安全约束的角色 --> 
       <security-role>
            <role-name>ReimUser</role-name>
        </security-role>
        <security-role>
            <role-name>ReimAdmin</role-name>
        </security-role>
    
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>root</web-resource-name>
                <url-pattern>/service/*</url-pattern>
                <url-pattern>/rest/*</url-pattern>
                <http-method>POST</http-method>
                <http-method>GET</http-method>
            </web-resource-collection>
            <auth-constraint>
                <role-name>ReimUser</role-name>
            </auth-constraint>
        </security-constraint>
    
       <!--  配置表单验证 -->
        <login-config>
            <auth-method>FORM</auth-method>
            <!--  指定HTTP Basic验证中使用的领域名  -->
            <realm-name>ReimApp</realm-name>
            <form-login-config>
                <form-login-page>/login.jsp</form-login-page>
                <form-error-page>/login.jsp</form-error-page>
            </form-login-config>
        </login-config>    

     表单的action地址j_security_check  j_username j_password不可更改

    新建用户表、组表并在glassfish的领域中配置对应的用户表、组表,用于校验用户是否合法。合法时从组表中读取用户对应的组设置到 container 中。

    其实这就是容器实现的sam模块,他会从配置的 组表 里面查当前登录的用户有哪些组,然后设置  GroupPrincipal 和 sam中 从 token 解析 scope 出来去设置一样。

    默认获取 UserPrincipal 对应的类,从里面解析出来的用户信息只有一个账号信息。如果需要获取完成的用户信息,可以自己实现ServerAuthModule模块来实现。

    这里配置的参数就是ServerAuthModule类所用到的参数。

    要支持这种,在 ServerAuthModule 的 validateRequest 里面加上对应的代码就可以了:

    if(request.getServletPath().startsWith('/j_security_check')) {
    String username = request.getParameter('j_username');
    String password = request.getParameter('j_password');
    //TODO: check username and password
    //TODO: set user's groups
    }

    这样action 和 对应的参数名称就都可以自己定义了,。 

  • 相关阅读:
    [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例
    玩转Asp.net MVC 的八个扩展点
    float实例讲解
    C#高性能TCP服务的多种实现方式
    如何把SQLServer数据库从高版本降级到低版本?
    ASP.NET MVC Area使用-将Area设置成独立项目
    如何使用ping和tracert命令测试网站访问速度
    ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
    MVC Action Filter
    c#中单元测试
  • 原文地址:https://www.cnblogs.com/jay763190097/p/6743487.html
Copyright © 2011-2022 走看看