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; }
若是像上面这样设置,读取登陆信息就是ide
LoginInfo login = (LoginInfo) SecurityUtils.getSubject().getPrincipal();
若是设置登陆信息的地方以下:code
@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()); }
读取登陆信息就是:token
String loginName = (String) SecurityUtils.getSubject().getPrincipal();
提醒:ip
网络上面好多入门级的程序员,说话的时候要负责任,不要误导别人,为了营造一个优良的开源环境或者社区,至少从本身开始作起吧。ci
后续,有空会更新关于自定义 shiro 的一些组件实现单点登陆的方式字符串