zoukankan      html  css  js  c++  java
  • shiro认证时Realm的写法

    第一种情况:

    1:实现shiro的认证可以继承AuthenticatingRealm,并重写它的doGetAuthenticationInfo方法。

    2:AuthenticatingRealm类的doGetAuthenticationInfo方法返回一个SimpleAuthenticationInfo对象,该对象里封装了要比对的凭证(即密码),然后把返回的SimpleAuthenticationInfo对象交给AuthenticatingRealm内部使用的CredentialsMatcher进行凭据验证。CredentialsMatcher会根据用户封装的UsernamePasswordToken和返回的SimpleAuthenticationInfo进行凭据的比对。账号的比对则在Realm内部由开发者完成。注意:这是普通明文密码的情况

    3:如果是加盐的散列加密的密码,则需要给AuthenticatingRealm设置CredentialsMatcher,Shiro提供了CredentialsMatcher的散列实现HashedCredentialsMatcher,这样返回的SimpleAuthenticationInfo对象中不仅要带上密文密码,还要带上加密时的盐,这样以来HashedCredentialsMatcher可以根据用户封装的UsernamePasswordToken和返回的SimpleAuthenticationInfo进行凭据的比对。同样账号的比对则在Realm内部由开发者完成。注意:这是加盐散列密文密码的情况

    4:返回的SimpleAuthenticationInfo对象的作用除了2和3中说的交给CredentialsMatcher进行凭据验证外,还有一个作用就是提供给SecurityManager,绑定到Subject上,这样我们可以通过subject来获取到认证通过的主体的信息,即SimpleAuthenticationInfo对象中的principal(我们可以把认证通过主体的基本信息都保存到principal中,这样就可以在代码的其他地方直接通过subject获取到主体的基本信息)。

    第二种情况:

    1:实现shiro的认证也可以实现Realm接口,并重写它的getAuthenticationInfo方法。

    2:和第一种情况不同的是,我们要在getAuthenticationInfo方法中完成账号和密码的全部比对,因为Realm接口内部没有CredentialsMatcher可使用。

    3:返回的SimpleAuthenticationInfo对象的唯一作用就是提供给SecurityManager,绑定到Subject上,这样我们可以通过subject来获取到认证通过的主体的信息,即SimpleAuthenticationInfo对象中的principal(我们可以把认证通过主体的基本信息都保存到principal中,这样就可以在代码的其他地方直接通过subject获取到主体的基本信息)。

  • 相关阅读:
    [HNOI2010]CITY 城市建设

    [HNOI2011]数学作业
    [NOI2012]美食节
    [HEOI2014]大工程
    [HEOI2013]ALO(待更)
    [HEOI2016/TJOI2016]序列
    贪食蛇(未完待续)
    [HEOI2016/TJOI2016]字符串
    bzoj 2437[Noi2011]兔兔与蛋蛋 黑白染色二分图+博弈+匈牙利新姿势
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302484.html
Copyright © 2011-2022 走看看