会员可以在此提问,尚新途老师有问必答

对大家有帮助的问答会被标记为“推荐”,看完课程过来浏览一下别人提的问题,会帮你学得更全面

截止目前,同学们一共提了129188个问题
2022-05-04 18:25:59

全局会话过期时间的设置会覆盖单独会话的过期时间吗,哪个优先级高一些啊

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro
Null2019-05-15 22:02:16

java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap

我导入了commons.collections.4.3.jar还是没用


相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧)
lsj2019-07-11 17:38:23

老师你好,实现登录认证的测试,我成功了一次,然后再测试,后面就全都是未知验证异常,这是为什么

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧)
大大橙子2020-11-21 14:50:15

为什么要这样全部导进来, 从头写不好么,有问题都不知道怎么调试了,烦死了

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧)
昵称2022-05-09 18:15:47

老师,权限不足的状态码不应该是403吗,此处已经登录,为啥会抛出401状态码

image.png


相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro
小樓一夜聽春雨2022-10-29 16:25:14

温馨提示:

    权限名是ROLE_开头

    有个_

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Spring Security(旧)
Autism2021-06-19 01:36:03

云盘这个项目的jar包至少缺2个 mybatis-spring 和serlvert-api的jar包

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧)
微信用户2022-06-07 17:43:02

我是按照文档上的复制上去执行的,为什么执行不成功呢?

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Spring Security(旧)
Casualed2021-10-29 14:39:08
相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧)
张家星2021-03-05 00:02:33
package com.bjsxt.shiro02;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;

public class TestB {
    public static void main(String[] args) {
        //[1]解析shiro.ini 文件
        IniSecurityManagerFactory factory =new IniSecurityManagerFactory("classpath:shiro04-jdbc.ini ");
        //[2]通过SecurityManager 工厂获得SecurityManager 实例
        SecurityManager securityManager = factory.getInstance();
        //[3]用SecurityUtils把SecurityManager 对象设置到运行
        SecurityUtils.setSecurityManager(securityManager);
        //[4]通过SecurityUtils 获得主体 subject
        Subject subject = SecurityUtils.getSubject();
        //[5]书写自己输入的账号和密码---相当于用户自己输入的账号和密码
//我们拿着自己书写用户名密码去和shiro.ini 文件中的账号密码比较
        UsernamePasswordToken token = new UsernamePasswordToken("root","root");
        try {
            //[6]进行身份的验证
            subject.login(token);
            //[7]通过方法判断是否登录成功
            if (subject.isAuthenticated()) {
                System.out.println("登录成功");
            }
        }catch (IncorrectCredentialsException e){
            System.out.println("凭证(密码)不正确");
        }catch (UnknownAccountException e1){
            System.out.println("用户名不正确");
        }catch (ExpiredCredentialsException e){
            System.out.println("凭证过期");
        }catch (ExcessiveAttemptsException e){
            System.out.println("尝试次数过多");
            e.printStackTrace();
        }catch (ConcurrentAccessException e){
            System.out.println("竞争次数过多");
        }
    }
}

自定义Realm文件

package com.bjsxt.shiro02;

import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * 自定义Realm
 */

/**
 * 授权
 */
public class UserRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        return null;
    }

    /**
     * 认证
     * @param authenticationToken
     * @return
     * @throws AuthenticationException
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shiro","root","zjx666888");
            PreparedStatement preparedStatement = conn.prepareStatement("select uname,pwd from user");
            ResultSet rs = preparedStatement.executeQuery();
            while (rs.next()){
                //把查到的数据集合给这个对象
                SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(rs.getString("uname"),rs.getString("pwd"),"real");
                return info;
            }

        }catch (Exception e){
        }
        return null;
    }


}

ini配置文件

image.png


数据库内容

image.png

image.png


老师为什么我输入sxt和123就可以登录成功,输入其他的就是密码错误??????????????


image.png

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧)
王梓能2019-06-21 15:53:30

image.png

image.png

image.png

不知道为什么username和password接受值为空

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧)
大王好本事2021-01-23 16:48:19

对于前后端分离的项目,比如说APP,我怎么在app端获取到服务器产生的token呢?


相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Spring Security(旧)
江上清风2022-03-18 13:34:21

屏幕截图 2022-03-18 133338.png

老师代码都是对的,但是跳转之后页面是这样的 

相关课程:JAVA 全系列/第九阶段:权限控制与安全认证/Spring Security(旧)

©2014-2023 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备13018289号-12    营业执照    经营许可证:京B2-20212637