XML配置
2023-09-10
配置相关配置文件
默认的配置文件为classpath目录下的simpleauth.xml
,可以通过如下配置添加其他配置文件
<simpleauth>
<configs>
<config>handler.xml</config>
<config>limit.xml</config>
<config>paths.xml</config>
<config>handlerChain.xml</config>
</configs>
</simpleauth>
配置Handler
paths可以只指定id,具体的路径可以单独声明。scope
默认为singleton,即所有用到这个Handler的函数均使用同一个实例。
<simpleauth>
<handler id="test">
<class>com.example.simpleauthtest.handler.MyHandler</class>
<scope>singleton</scope>
<paths id="myHandlerPath"/>
</handler>
<handler id="myHandler2">
<class>com.codingcube.simpleauth.security.handler.session.SessionMigratorHandler</class>
<paths id="myHandlerPath3">
<path>/say/*</path>
<path>/eat</path>
</paths>
</handler>
</simpleauth>
配置Limit
60s内只能访问两次,超过之后被禁止60s
<simpleauth>
<!--注册Limit-->
<limit id="MyLimit">
<times>2</times>
<seconds>60</seconds>
<ban>60</ban>
<paths id="myLimitPath">
<path>/say</path>
<path>/eat</path>
</paths>
</limit>
</simpleauth>
或者可以更详细的配置
<simpleauth>
<!--注册Limit-->
<limit name="MyLimit" id="MyLimit">
<times>1</times>
<seconds>60</seconds>
<ban>60</ban>
<signStrategic>com.codingcube.simpleauth.auth.strategic.DefaultItemStrategic</signStrategic>
<itemStrategic>com.codingcube.simpleauth.auth.strategic.DefaultSignStrategic</itemStrategic>
<effectiveStrategic>com.codingcube.simpleauth.limit.strategic.DefaultEffectiveStrategic</effectiveStrategic>
<tokenLimit>com.codingcube.simpleauth.limit.util.TokenBucket</tokenLimit>
<paths id="myLimitPath">
<path>/say</path>
<path>/eat</path>
</paths>
</limit>
</simpleauth>
配置HandlerChain
<simpleauth>
<handlerChain id="MyLimit">
<list>
<handler id="test"/>
<handler>
<class>com.example.simpleauthtest.handler.MyHandler2</class>
</handler>
</list>
<paths id="myPath"/>
</handlerChain>
</simpleauth>
配置Paths
<simpleauth>
<paths id="myPath">
<permission>myPath</permission>
<path>/say/*</path>
<path>/eat</path>
</paths>
<paths id="myHandlerPath2">
<path>/sleep</path>
<path>/eat</path>
</paths>
</simpleauth>
总结
当然你也可以把所有内容均配置到simpleauth.xml
内
<simpleauth>
<configs>
<!--若后缀为xml,则配置文件中可以不添加后缀-->
<config>handler</config>
<config>limit</config>
<config>paths</config>
<config>handlerChain</config>
</configs>
<handler id="test">
<class>com.example.simpleauthtest.handler.MyHandler</class>
<scope>singleton</scope>
<paths id="myHandlerPath"/>
</handler>
<limit id="MyLimit">
<times>1</times>
<seconds>60</seconds>
<ban>60</ban>
<paths id="myLimitPath">
<path>/say</path>
<path>/eat</path>
</paths>
</limit>
<handlerChain id="MyLimit">
<list>
<handler id="test"/>
<handler>
<class>com.example.simpleauthtest.handler.MyHandler2</class>
</handler>
</list>
<paths id="myPath"/>
</handlerChain>
<paths id="myPath">
<permission>myPath</permission>
<path>/say/*</path>
<path>/eat</path>
</paths>
<paths id="myHandlerPath2">
<path>/say/*</path>
<path>/eat</path>
</paths>
</simpleauth>