权限框架Spring Secutity

1.使用这个框架首先要导入 Spring的jar包,然后导入  Spring Security 的5个jar包

2.先配置web.xml文件,配置filter

<!--配置个filter  -->

    <filter>

        <filter-name>springSecurityFilterChain</filter-name>

        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

    </filter>


    <filter-mapping>

      <filter-name>springSecurityFilterChain</filter-name>

      <url-pattern>/*</url-pattern>

    </filter-mapping>

3.在有auto-config="true"时候,框架会自动给配置一个登陆界面  ,下面就是一套配置


<security:http auto-config="true">

<security:intercept-url pattern="/user.jsp" access="ROLE_USER"/>

<security:intercept-url pattern="/admin.jsp" access="ROLE_ADMIN"/> 

<security:http auto-config="true">

<security:authentication-manager>

<security:authentication-provider>

<security:user-service>

<security:user name="user" password="user" authorities="ROLE_USER"/>

<security:user name="admin" password="admin" authorities="ROLE_USER,ROLE_ADMIN"/> 

</security:user-service>

</security:authentication-provider>

</security:authentication-manager>


4.可以自定义登陆界面和登出

<security:form-login

login-page="/login.jsp"

username-parameter="username"

password-parameter="password"

login-processing-url="/login"

default-target-url="/logout.jsp"

always-use-default-target="true"

authentication-success-handler-ref="authenticationSuccessHandler"

/>

1.login-page="/login.jsp"  配置前台的页面 action

2.login-processing-url="/login" 允许的url

3.default-target-url="/logout.jsp"    登陆成功显示的页面

4.always-use-default-target="true"   只要登录成功就显示  default-target-url="/logout.jsp"  这上面的页面

5.authentication-success-handler-ref="authenticationSuccessHandler"    如果登陆成功的话,就会调用这个方法,可以添加业务逻辑处理,

此时将忽略 default-target-url 和 always-use-default-target


<security:logout  

logout-url="/logout"

invalidate-session="true"

success-handler-ref="logoutSuccessHandler"

/>

1.logout-url="/logout"  登出的url

2.invalidate-session="true"  是否登出时候,销毁session  是的

3.success-handler-ref="logoutSuccessHandler"  可以在其中编写登陆实际的业务逻辑.

4.logout-success-url: 登出成功后的响应页面, 默认为 index.jsp

5.注意 success-handler-ref="logoutSuccessHandler"  和  logout-success-url  只能使用一个

 

5.自定义用户的信息   (这个是设置用户的密码,和用户的信息之类的)

创建UserDetailsService接口的实现类,实现方法  利用传入的 username 从数据库中获取用户信息, 然后封装成一个 UserDetails 对象返回. 

密码可以加密,而且还是从数据库里取的


配置文件信息<!--设置密码加密的方式  -->

<security:password-encoder hash="md5">

<security:salt-source user-property="username"/>

</security:password-encoder>


加深的知识

6.为下属写方法,设置拦截界面和用户的权限(这个方法是设置拦截的页面和用户的权限)


1.MyFilterInvocationSecurityMetadataSource 实现 FactoryBean<DefaultFilterInvocationSecurityMetadataSource>   

下属的方法在getObject()方法里为 返回的LinkedHashMap<String,List<String>>赋值, 遍历  获取 key 和 value  ,

2.返回一个DefaultFilterInvocationSecurityMetadataSource对象

3.MyBeanPostProcessor  实现BeanPostProcessor   在这里面 替换属性,  FilterSecurityInterceptor    MyFilterInvocationSecurityMetadataSource

FilterSecurityInterceptor     框架默认使用这个的值,  我们把它的setSecurityMetadataSource  属性替换了 就可以使用我们想让他使用的属性了


4.流程就是  FilterInvocationSecurityMetadataSourceMapBuilderImpl  调用   MyFilterInvocationSecurityMetadataSource  获取值以后, 通过我们自己写的

MyBeanPostProcessor  实现属性的替换   即可





11月11 

 今天将权限框架加到了ssh框架里。很好用

你可能感兴趣的:(权限框架Spring Secutity)