Spring Security3.0入门

在认识Spring Security之前,
所有的权限验证都混杂在业务逻辑中,用户的每个操作可能都需要对用户是否有该权限进行判断。类似这样的验证代码被分散在系统的许多地方,难以维护。


正如系统日志,事务管理等这些系统级的服务一样,我们应该将它作为系统的一个单独的“切面”进行管理,以达到业务逻辑与系统级的服务真正分离的目。

Spring Security将系统的安全逻辑从业务中分离出来。
Spring Security提供有若干个过滤器,它们能够拦截Servlet请求,并将这些请求转给认证和访问的决策管理器处理,从而增强安全性。


Spring Security3.0简介

Spring Security,这是一种基于Spring AOP和Servlet过滤器的安全框架。

它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。

它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了依赖注入(DI,Dependency Injection)和AOP(面向切面)技术



配置 web.xml 文件



服务启动时加载所有以applicationContext开头的xml文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext*.xml
</param-value>
</context-param>
<!--Spring容器启动监听器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>


<!—代理过滤器的类,它就相当于是一个入口,web容器启动的时候,由它到spring容器中启动 spring Security 需要的过滤器链。-->





配置applicationContext.xml




配置applicationContext.xml





auto-config属性值为true,表示配置SpringSecurity自带的所有过滤器。


intercept-url pattern定义要拦截的访问地址,/**表示拦截src下所有访问路径。


access 属性表示可以访问此路径的角色。


那么 ROLE_USER角色 在哪里定义呢?




如果用户名为 user,密码为 user 的用户成功登录了,它的角色是 ROLE_USER ,那么他可以访
问规定的资源。 authorites属性表示设置固定的角色


编写首页

目前为止,项目中只有一个 index.jsp
在这个页面上只需要写一句话







将项目部署到 web 服务器中,然后访问首页 index.jsp,我们发现首页并没有出现,而是跳转到了 一个登录页面上。
因为项目刚启动,第一次访问的时候,没有任何用户登录,而在配置文件中我们拦截的是所有的请求,所以第一次请求被拦截了。




输入刚才在配置文件中的配置
用户名:user,密码:user
提交后,发现能够正确的转到首页

那个登录页面哪里来的?



当有请求来到的时候,Spring Security 框架开始检查要访问的资源是否有权限访问,如果当前登录用户无权限访问或者当前根本就没有用户登录,则 Spring Securtiy 框架就会自动生成一个 登录页面。





当在登录页面进行了正确的登录后,Spring Security会自动进行登录验证,如果成功登录,将用户信息放到 session 中,然后转到先前请求的页面上。




我们可以在 index 中将 session 中的 key—value 打印出来,看看 Spring Security 将用户信息如何放到 session 中的:






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值