我可以知道我们可以为http-basic指定url,以便仅在进入特定页面时进行身份验证吗?示例login.jsp?我不想使用表单登录。
答案 0 :(得分:1)
您可以通过配置Web应用程序来执行此操作,无论您是否使用spring。
Configuring Security in Web Applications
您将要应用安全性约束的资源在web.xml
部署描述符的“security-constrant”元素中指定。例如:
<security-constraint>
<web-resource-collection>
<web-resource-name>SecureOrdersEast</web-resource-name>
<description>
Security constraint for
resources in the orders/east directory
</description>
<url-pattern>/orders/east/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description>
constraint for east coast sales
</description>
<role-name>east</role-name>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<description>SSL not required</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
并且,要将Auth方法定义为BASIC,您还必须在web.xml
文件中的login-config元素中定义它:
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
在login-config中,您还可以定义登录领域和其他选项。您可以在web.xml Deployment Descriptor Elements: login-config找到更多信息。
答案 1 :(得分:1)
Spring方法:
<security:http>
<security:http-basic></security:http-basic>
<security:intercept-url method="POST" pattern="/mypage.jsp" access="ROLE_USER" />
</security:http>
如您所见,在 intercept-url 元素中,您可以在访问控制下定义资源。它有一个属性 模式 ,您可以在其中定义此类资源的网址格式(允许使用通配符)。
答案 2 :(得分:1)
您可以定义自己的过滤器并适当使用,而不是使用<security:http-basic>
。例如
<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
<security:filter-chain-map path-type="ant">
<security:filter-chain pattern="/login.jsp" filters="formExceptionTranslationFilter"/>
<security:filter-chain pattern="/login2.jsp" filters="basicProcessingFilter"/>
</security:filter-chain-map>
</bean>