shiro是自动对比登录信息么?怎么获取匹配成功的AuthenticationToken? 或者说shiro会自动生成token么?那么为什么开发者需要自己在controller中自己创建UsernamePasswordToken?
时间: 2024-01-27 09:30:32 浏览: 24
Shiro框架并不会自动对比登录信息,而是通过配置的Realm对象来获取后端存储的用户信息,并将用户提供的登录信息与后端存储的信息进行比。
在Shiro中,匹配成功的AuthenticationToken是由开发者在身份验证环节自行创建的。开发者需要在Controller中自己创建UsernamePasswordToken对象,并将用户提供的登录信息设置到该对象中。然后,将该对象传递给Shiro的Subject对象进行身份验证。
开发者需要自己创建UsernamePasswordToken的原因是为了灵活性和可扩展性。Shiro框架不限制开发者使用特定的登录方式,因此开发者可以根据业务需求自定义不同的Token对象。比如,除了用户名和密码,开发者可能还需要其他的登录信息(如验证码、手机号等)。通过自定义Token对象,开发者可以在身份验证过程中传递和验证更多的登录信息。
总结来说,Shiro框架并不会自动生成Token,而是由开发者根据具体需求自己创建并设置Token对象。这样做可以使身份验证过程更加灵活,并满足不同业务场景下的需求。
相关问题
AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)
AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)是Shiro框架中一个非常重要的方法,用于在用户登录时进行身份认证。其主要作用是通过传入的token对象获取用户的身份信息,并将其与数据库或其他数据源中的信息进行比较,判断用户是否合法。
该方法一般需要开发者根据自己的业务需求进行重写,例如可以在该方法中编写查询数据库的代码,获取用户的信息。如果查询到该用户的信息,则返回一个封装了用户信息的AuthenticationInfo对象,否则返回null。
需要注意的是,该方法返回的AuthenticationInfo对象中应包含用户的身份信息和密码信息,以便在后续的认证过程中进行比较。
shiro 微信登录
shiro 是一个 Java 的安全框架,可以用来实现用户认证和授权等功能。如果要实现微信登录,可以使用 shiro 的 OAuth2 功能,具体步骤如下:
1. 在微信公众平台申请开发者账号,并创建一个网站应用。
2. 在 shiro 的配置文件中添加 OAuth2 相关的配置,包括 client id、client secret、redirect uri 等信息。
3. 在登录页面中添加微信登录按钮,并将其链接到微信授权页面。
4. 用户点击微信登录按钮后,会跳转到微信授权页面,用户输入微信账号密码并授权后,会跳转回 redirect uri,并携带授权码。
5. 在 redirect uri 页面中,使用 shiro 的 OAuth2Filter 进行认证,获取 access token 和用户信息,并将用户信息存储到 session 中。
6. 用户登录成功后,可以根据需要进行授权操作。