shiro 管理登录,获取登录信息的方式常用的是:
subject sub = SecurityUtils.getSubject();
Object obj = sub.getPrincipal();
这里的 obj 是字符串,还是某个实体,取决于 ShiroRealm 类的设置值,代码如下:
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)
throws AuthenticationException {
System.out.println("获取登录者信息-->MyShiroRealm.doGetAuthenticationInfo()");
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
String userS = token.getUsername();
User user = userService.findByName(userS);
if (user != null) {
LoginInfo info = new LoginInfo();
info.setName(user.getName());
info.setLoginId(user.getId);
return new SimpleAuthenticationInfo(info, user.getPassword(), getName());
}
return null;
}
如果像上面这样设置,读取登录信息就是
LoginInfo login = (LoginInfo) SecurityUtils.getSubject().getPrincipal();
如果设置登录信息的地方如下:
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)
throws AuthenticationException {
System.out.println("获取登录者信息-->MyShiroRealm.doGetAuthenticationInfo()");
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
String userS = token.getUsername();
User user = userService.findByName(userS);
return new SimpleAuthenticationInfo(users, user.getPassword(), getName());
}
读取登录信息就是:
String loginName = (String) SecurityUtils.getSubject().getPrincipal();
本文详细介绍了如何使用Shiro框架进行登录信息的管理与读取。通过两种不同的设置方式,展示了如何根据实际情况选择合适的登录信息类型,无论是字符串还是自定义实体类。这为开发者提供了灵活的登录信息处理方案。
4万+

被折叠的 条评论
为什么被折叠?



