xyb*_*rek 6 java rest spring spring-security
我在我的应用程序Spring控制器中实现了Spring Security Expression:
@Controller
@RequestMapping("init")
public class InitController {
@PreAuthorize("hasRole('ROLE_ADMIN')")
@RequestMapping(value = "/", method = RequestMethod.GET)
public @ResponseBody String home(){
return "This is the init page";
}
}
Run Code Online (Sandbox Code Playgroud)
使用此安全配置:
<http auto-config="true" create-session="stateless" use-expressions="true">
<intercept-url pattern="/_ah*" access="permitAll" />
<intercept-url pattern="/init/*" access="hasRole('ROLE_ADMIN')"/>
<intercept-url pattern="/init*" access="hasRole('ROLE_ADMIN')"/>
</http>
Run Code Online (Sandbox Code Playgroud)
当访问此资源时,将显示默认的Spring登录表单(http://localhost:8888/spring_security_login)但是我不希望这种情况发生,并且我只想将凭据插入请求标头中,如"x-authorization-key"或其他适合这种情况.
这有什么可能的解决方案?
头
你可能必须阅读有关说明什么auto-config没有,然后将其删除禁用form-login.如果您专门配置要使用的内容,则配置将更加清晰.
从您的问题中不清楚您希望将哪些内容包含在x-authorization-key标题中.如果您只是使用客户端ID和共享密钥进行身份验证,那么您也可以使用基本身份验证,因为它已经开箱即用,您只需添加<http-basic />到您的配置中即可.如果您有更多自定义的内容,那么您可能必须实现自定义过滤器并将其添加到Spring Security过滤器链中以提取凭据并处理它们.
您的身份验证机制如何适合也取决于它实际包含的内容.通常,您的用户将分配在进行身份验证时加载的角色,通常来自某种类型的数据库.该hasRole表达式只是简单地检查当前用户是否具有指定的角色.通常,您只需要创建一个UserDetailsService以标准格式加载用户信息的方法,该格式可以轻松插入到框架中.这在其他地方详细介绍.如果你真的需要更多定制的东西,这篇关于GAE集成的博客文章包含了如何与更复杂的系统集成的细节.
如果您使用,Spring Security将不会创建或使用会话create-session='stateless'.
PS您实际上不需要在URL级别和处理相同URL的控制器上包含相同的安全属性.
| 归档时间: |
|
| 查看次数: |
16706 次 |
| 最近记录: |