shiro认证过程,怎样做才会走realm的认证方法
时间: 2023-07-24 21:08:05 浏览: 156
在Shiro中,当一个用户尝试登录时,Shiro会将用户名和密码传递给一个被称为“Realm”的组件进行身份认证。Realm是一个可以自定义的组件,你可以根据自己的需求来实现自己的Realm,以满足不同的身份认证需求。
要使Shiro走Realm的认证方法,需要在Shiro的配置文件中配置Realm。具体步骤如下:
1. 创建自定义的Realm类,该类需要继承org.apache.shiro.realm.AuthenticatingRealm类,并实现其doGetAuthenticationInfo(AuthenticationToken token)方法,用于验证用户的身份。
2. 在shiro.ini配置文件中配置Realm,如下所示:
```
[main]
# 配置自定义的Realm
myRealm = com.example.MyRealm
# 配置SecurityManager,指定使用myRealm进行身份验证
securityManager.realms = $myRealm
```
这样配置后,当用户进行身份验证时,Shiro会根据配置的Realm进行验证,而不是默认的身份验证方式。
相关问题
鉴权 shiro realm
在Shiro中,Realm是用于验证用户身份和授权的组件。Realm是一个接口,用于定义如何从数据源(如数据库、LDAP、文件等)中获取用户身份和权限信息。Realm通常用于与后端数据源进行交互,以验证用户的身份和授权。Shiro提供了许多默认的Realm实现,例如JDBC Realm、LDAP Realm和Properties Realm等。此外,Shiro还支持自定义Realm实现,以满足特定的业务需求。在自定义Realm时,需要实现Realm接口中的方法,包括获取用户身份信息、获取用户权限信息等。通过配置Shiro安全管理器的Realm属性,可以将自定义Realm与Shiro集成,实现对用户身份和权限的验证。
shiro多个realm
Shiro 支持在一个应用程序中同时使用多个 Realm 来进行身份认证和授权。这种情况通常发生在应用程序中存在多个身份验证和授权的方式,或者需要与多个用户存储系统进行交互的情况下。
要配置多个 Realm,你可以在 Shiro 的配置文件中指定每个 Realm 的详细信息。在配置文件中,你可以使用 `securityManager.realms` 属性来指定多个 Realm 的实现类,并为每个 Realm 配置相应的属性。
以下是一个示例配置文件中配置了两个 Realm 的例子:
```ini
[main]
# ...
securityManager.realms = $myRealm1, $myRealm2
myRealm1 = com.example.realm.MyRealm1
myRealm1.someProperty = someValue1
myRealm2 = com.example.realm.MyRealm2
myRealm2.someProperty = someValue2
```
在上面的示例中,`securityManager.realms` 属性指定了两个 Realm:`myRealm1` 和 `myRealm2`。对应的类名分别为 `com.example.realm.MyRealm1` 和 `com.example.realm.MyRealm2`。
每个 Realm 都可以配置自己的属性,例如 `someProperty`。你可以根据自己的需求配置每个 Realm 的属性。
配置完成后,Shiro 将会按照配置文件中定义的顺序依次尝试每个 Realm 进行身份验证和授权操作。
希望这个简单的示例能够帮助你理解 Shiro 多个 Realm 的配置和使用。如有更多疑问,请随时继续提问。
阅读全文