zoukankan      html  css  js  c++  java
  • Shiro加密

    HashedCredentialsMatcher

    自定义Realm中使用散列

    盐的使用

    HashedCredentialsMatcher

    1.修改CustomRealm类
    代码入下:

    package com.imooc.shiro.realm;

    import org.apache.shiro.authc.AuthenticationException;
    import org.apache.shiro.authc.AuthenticationInfo;
    import org.apache.shiro.authc.AuthenticationToken;
    import org.apache.shiro.authc.SimpleAuthenticationInfo;
    import org.apache.shiro.authz.AuthorizationInfo;
    import org.apache.shiro.authz.SimpleAuthorizationInfo;
    import org.apache.shiro.crypto.hash.Md5Hash;
    import org.apache.shiro.realm.AuthorizingRealm;
    import org.apache.shiro.subject.PrincipalCollection;

    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;

    /**
    *
    * @author 宋政宏
    * @date 2019-06-21 15:57
    */
    public class CustomRealm extends AuthorizingRealm {

    Map<String,String> userMap = new HashMap<>(16);
    {
    userMap.put("Mark","e10adc3949ba59abbe56e057f20f883e");

    super.setName("customRealm");
    }
    //授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {

    String userName = (String) principalCollection.getPrimaryPrincipal();
    //从数据库或者缓存中获取角色数据
    Set<String> roles = getRolesByUserName(userName);
    //从数据库或者缓存中获取权限数据
    Set<String> permissions = getPermissionsByUserName(userName);
    SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
    simpleAuthorizationInfo.setStringPermissions(permissions);
    simpleAuthorizationInfo.setRoles(roles);

    return simpleAuthorizationInfo;
    }

    private Set<String> getPermissionsByUserName(String userName) {
    Set<String> sets = new HashSet<>();
    sets.add("user:delete");
    sets.add("user:add");
    return sets;
    }

    /**
    *
    * @param userName
    * @return
    */
    private Set<String> getRolesByUserName(String userName) {
    Set<String> sets = new HashSet<>();
    sets.add("admin");
    sets.add("user");
    return sets;
    }

    //认证
    //AuthenticationToken认证信息
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {

    //1.从主体传过来的认证信息中,获得用户名
    String userName = (String) authenticationToken.getPrincipal();

    //2.通过用户名到数据库中获取凭证
    String password = getPasswordByUserName(userName);
    if(password == null){
    return null;
    }
    SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo("Mark",password,"customRealm");
    return authenticationInfo;
    }
    /**
    * 模拟数据库查询凭证
    * @param userName
    * @return
    */
    private String getPasswordByUserName(String userName){
    return userMap.get(userName);
    }

    public static void main(String [] args){
    Md5Hash md5Hash = new Md5Hash("123456");
    System.out.println(md5Hash.toString());
    }
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    添加了加密方法

    public static void main(String [] args){
    Md5Hash md5Hash = new Md5Hash("123456");
    System.out.println(md5Hash.toString());
    }
    1
    2
    3
    4
    运行
    生成123456的加密结果e10adc3949ba59abbe56e057f20f883e

    ---------------------

  • 相关阅读:
    c#redis使用
    不安全的HTTP方法(渗透实验)
    arguments.callee弃用与webuploader
    多线程系列1:经典卖票
    终于确定了系统lsass.exe占用cpu的根本原因了,速度来看一看!![转载]
    edit响应键盘的“咚咚”声音去掉
    delphi资源文件制作及使用详解
    MySQL server has gone away错误的解决办法
    MySQL server has gone away的解决方法
    MySQL
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11082203.html
Copyright © 2011-2022 走看看