使用Shiro,原来写了一个基类,通过SecurityUtils.getSubject().getPrincipal()获取授权用户信息,一直用得好好的,突然有人和我说一个方法不行,其它方法都可以,我想到没有获取到授权信息...注:点击getPrincipal进入源码,可看到如下说明: ?
SecurityUtils.getSubject().getPrincipal()返回类型; 问题2....Shiro如何利用session保持会话 ---- 我们常用 SecurityUtils.getSubject().getPrincipal();获取当前登录用户信息,但是这个方法是如何获得用户信息的?...SecurityUtils.getSubject().getPrincipal()返回类型; 查看源码得知它是Object,但是实际上,他的返回类型由我们控制。...().getPrincipal()将得到User类。...().getPrincipal()将得到字符串。
授权的方式 shiro支持三种方式的授权: 代码触发 通过写if/else 授权代码块完成 Subject subject = SecurityUtils.getSubject(); if(subject.hasRole...对象添加到当前运行环境中 SecurityUtils.setSecurityManager(securityManager); // 4.获取Subject对象 Subject subject = SecurityUtils.getSubject...()+"是否具有role1角色:"+subject.hasRole("role1")); System.out.println(subject.getPrincipal()+"是否具有role3角色:...()+"是否具有user:create权限:"+subject.isPermitted("user:create")); System.out.println(subject.getPrincipal...对象添加到当前运行环境中 SecurityUtils.setSecurityManager(securityManager); // 4.获取Subject对象 Subject subject = SecurityUtils.getSubject
().getSession(); } public static Subject getSubject() { return SecurityUtils.getSubject...(); } public static SysUserEntity getUserEntity() { return (SysUserEntity)SecurityUtils.getSubject...().getPrincipal(); } public static Long getUserId() { return getUserEntity().getUserId...().getPrincipal() !...= null; } public static void logout() { SecurityUtils.getSubject().logout(); }
Quickstart.java // get the currently executing user: Subject currentUser = SecurityUtils.getSubject...(); 使用SecurityUtils.getSubject(),我们可以得到当前正在执行的主题。...UnknownAccountException uae) { log.info("There is no user with username of " + token.getPrincipal...catch (IncorrectCredentialsException ice) { log.info("Password for account " + token.getPrincipal...} catch (LockedAccountException lae) { log.info("The account for username " + token.getPrincipal
SecurityUtils.setSecurityManager(securityManager); // 获取当前认证主体 Subject subject = SecurityUtils.getSubject...SecurityUtils.setSecurityManager(securityManager); // 获取当前认证主体 Subject subject = SecurityUtils.getSubject...usernamePasswordToken); System.out.println(subject.isAuthenticated()); System.out.println(subject.getPrincipal...()); System.out.println(subject.getPrincipal() + "是否拥有ADMIN角色:" + subject.hasRole("ADMIN"));...} } 执行测试,查看控制台打印,说明权限授予成功 Section 04 - Subject 用户主体Subject Subject常用方法: getPrincipal(): 返回用户在应用中唯一的用户名
调用 SecurityUtils.getSubject(); Subject currentUser = SecurityUtils.getSubject(); // 测试使用...catch (UnknownAccountException uae) { log.info("---->没有查询到用户名" + token.getPrincipal()...catch (IncorrectCredentialsException ice) { log.info("----> 用户的密码错误 " + token.getPrincipal...(AuthenticationException ae) { } } log.info("----> 用户 [" + currentUser.getPrincipal...调用 SecurityUtils.getSubject(),获取当前的 Subject.; 2. 调用 Subject 的 isAuthenticated() 测试有没有登录。 3.
String username = ""; if (SecurityUtils.getSubject().getPrincipal() !...= null) { username = ((User) SecurityUtils.getSubject().getPrincipal()).getUsername();
let's see what you can do: // get the currently executing user: //获取当前的subject SecurityUtils.getSubject...() Subject currentUser = SecurityUtils.getSubject(); // Do some stuff with a Session...UnknownAccountException uae) { log.info("There is no user with username of " + token.getPrincipal...catch (IncorrectCredentialsException ice) { log.info("Password for account " + token.getPrincipal...} catch (LockedAccountException lae) { log.info("The account for username " + token.getPrincipal
Directiv形式 public class GuestTag extends Directiv { private Subject getSubject() { return SecurityUtils.getSubject...public void exec(Env env, Scope scope, Writer writer) { if (getSubject() == null || getSubject().getPrincipal...extends Directiv { private Expr[] exprs; private Subject getSubject() { return SecurityUtils.getSubject...body #end 共享对象扩展 使用这种形式就更舒服了 public class ShiroTag { private Subject getSubject() { return SecurityUtils.getSubject...(); } public boolean isGuest() { return getSubject() == null || getSubject().getPrincipal
UnknownAccountException uae) { log.info("There is no user with username of " + token.getPrincipal...catch (IncorrectCredentialsException ice) { log.info("Password for account " + token.getPrincipal...} catch (LockedAccountException lae) { log.info("The account for username " + token.getPrincipal...print their identifying principal (in this case, a username): log.info("User [" + currentUser.getPrincipal...(); user currentUser = (user) subject.getPrincipal(); //授权角色 info.addStringPermission
"123")) ; } /** * 获取会话 */ public static Session getSession() { return SecurityUtils.getSubject...(); } public static SysUserEntity getUserEntity() { return (SysUserEntity)SecurityUtils.getSubject...().getPrincipal(); } public static Long getUserId() { return getUserEntity().getUserId...().getPrincipal() !...= null; } public static void logout() { SecurityUtils.getSubject().logout(); } }
AuthenticationToken token) throws AuthenticationException { //1 获取用户身份信息 String name = token.getPrincipal...null) { AuthenticationInfo info = new SimpleAuthenticationInfo( token.getPrincipal...public String userLogin(String name, String pwd) { //1 获取 Subject 对象 Subject subject = SecurityUtils.getSubject...String pwd, HttpSession session) { //1 获取 Subject 对象 Subject subject = SecurityUtils.getSubject...方法进行登录认证 try { subject.login(token); session.setAttribute("user", token.getPrincipal
String login(Blogger blogger,HttpServletRequest request){ //shiro身份验证 Subject subject = SecurityUtils.getSubject...AuthenticationToken token) throws AuthenticationException { String userName = (String) token.getPrincipal...= null){ //存在该用户名 SecurityUtils.getSubject().getSession().setAttribute("currentUser
SecurityUtils.setSecurityManager(securityManager); //4.创建主体(此时的主体还为经过认证) Subject subject = SecurityUtils.getSubject...验证是否登录成功 System.out.println("用户登录成功="+subject.isAuthenticated()); //8.登录成功获取数据 //getPrincipal...获取登录成功的安全数据 System.out.println(subject.getPrincipal()); }
AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal...AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal...AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal...AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal...AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal
直接由用户使用,调用功能简单,其底层调用Securitymanager的相关流程 Subject currentUser = SecurityUtils.getSubject(); // 身份认证(...UnknownAccountException uae) {//⽤户不存在 System.out.println("There is no user with username of " + token.getPrincipal...IncorrectCredentialsException ice) {//密码错误 System.out.println("Password for account " + token.getPrincipal...) {//账户冻结,例如多次登陆 System.out.println("The account for username " + token.getPrincipal...) {//其他认证异常 } } // 认证成功则⽤户信息会存⼊ currentUser(Subject) System.out.println("User [" + currentUser.getPrincipal
session, String loginType) { //shiro编写登录认证 //1.获取subject Subject subject = SecurityUtils.getSubject...if (loginType.equals("student")) { Student student = (Student) subject.getPrincipal...里传过来的用户名拿到,把学生对象信息查出来,存入session student = studentService.findByStuid((String) token.getPrincipal...} if (loginType.equals("admin")) { Admin admin = (Admin) subject.getPrincipal
领取专属 10元无门槛券
手把手带您无忧上云