shiro web 登录加密功能

本文详细介绍了如何在Shiro框架中实现Web登录的加密功能,从添加Realm到配置加密,再到登录Controller的处理,一步步解析加密配置的全过程。
摘要由CSDN通过智能技术生成

添加 Realm

   log.info("authenticationToken:"+authenticationToken);
        UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
        String loginName = token.getUsername();
        User user = new User(loginName,null);
        //根据用户名获取用户信息
         user =  userService.login(user);
        if(null==user){
            throw  new UnknownAccountException("用户名不存在");
        }
        //取出盐并编码
        ByteSource salt = ByteSource.Util.bytes(loginName);
        SimpleAuthenticationInfo simpleAuthenticationInfo=   new SimpleAuthenticationInfo(loginName,user.getPassWord(),salt,getName());
        return simpleAuthenticationInfo;在这里插入代码片

加密

public class ShiroUtil {
    /**
     *
     * @param encryptedStr
     * @return
     */
    public static final String MD5(final  String useName,final String passWord){
        ByteSource salt = ByteSource.Util.bytes(useName);
        SimpleHash simpleHash=new SimpleHash(ShiroConstant.ENCRYPTION_MD5, passWord, salt, ShiroConstant.ENCRYPTION_NO);
        return simpleHash.toHex();
    }
}

登录controller

   Subject subject = SecurityUtils.getSubject();
        //如果登录用户没有通过身份验证
        if(!subject.isAuthenticated()){
            //封装成token对象
            UsernamePasswordToken token = new UsernamePasswordToken(username,passWord);
            token.setRememberMe(true);
            try {
                subject.login(token);
            }catch (AuthenticationException e){
                log.info("登录失败"+e.getMessage());
            }
        }

加密配置

bean id="securityRealm" class="com.ali.pims.realms.ShiroRealm">
        <property name="credentialsMatcher">
            <bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
                <!--md5加密-->
                <property name="hashAlgorithmName" value="MD5"></property>
                <!--加密次数-->
                <property name="hashIterations" value="2"></property>
            </bean>
        </property>
    </bean>

数据库账号密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值