spring-security_自定义加密器

2017-05-08  本文已影响0人  凌云v

虽然 spring security 已经提供了比较完善的加密机制,但是有时根据业务需求需要定制自己的加密方式。
spring security 提供了加密扩充的接口,下文主要介绍如何在 spring security 中添加自定义的加密器。

配置 spring security 开发环境

项目目录如下:

工程目录结构

自定义加密器

实现接口 PasswordEncoder

public class MPasswordEncoder implements PasswordEncoder {

    /**
     * 对密码进行加密并返回
     */
    public String encode(CharSequence rawPassword) {

        String encPassword = rawPassword.toString();
        return encPassword;
    }

    /**
     * 验证密码是否正确
     */
    public boolean matches(CharSequence rawPassword, String encodedPassword) {

        return encode(rawPassword).equals(encodedPassword);
    }
}

注意:

修改 security 配置文件

修改 security.xml 文件,加载并引用自定义的加密器。

<b:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:b="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">

    <authentication-manager alias="authenticationManager">
        <authentication-provider>
            <!-- 2、引用自定义加密器 -->
            <password-encoder ref="mPasswordEncoder" />

            <user-service>
                <user name="admin" password="password"
                    authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>
    
    <!-- 1、加载自定义加密器 -->
    <b:bean id="mPasswordEncoder" class="com.sfq.MPasswordEncoder"></b:bean>
</b:beans>

其中:

结果示例

结果示例图

源码

点击下载源码

上一篇下一篇

猜你喜欢

热点阅读