第2篇Scrum冲刺博客

软件工程
https://edu.cnblogs.com/campus/gdgy/2023softwareengine
团队GitCode仓库
https://gitcode.net/weixin_56428538/nobugsonlyfeatures
这个作业的目标
<第2篇Scrum冲刺博客>



1 每天举行站立式会议

1.1 当天站立式会议照片


1.2 昨天已完成的工作

成员 任务
周睿晨
整合shiro+jwt进行权限验证
樊培岩
注册登录前端页面
黄嘉艺
登陆、个人页面UI设计
钟思捷
数据库设计
甘坤南
统筹项目整体进程
梁嘉俊
组织每日站立式会议、博客撰写

1.3 今天计划完成的工作

成员 任务
周睿晨
用Hibernate validatior进行表单的实体校验
樊培岩
Header组件编写
黄嘉艺
博客详情,博客列表UI设计
钟思捷
全局异常处理汇总
甘坤南
各界面数据请求函数设计及实现
梁嘉俊
组织每日站立式会议、博客撰写

1.4 工作中遇到的困难

成员 遇到的困难
周睿晨 环境搭建复杂
樊培岩 前端学习还不够
黄嘉艺 有些想法没法实现
钟思捷 与数据库交互遇到了问题
甘坤南 统筹队员们遇到的问题也不简单
梁嘉俊 协调队员们的时间

2 项目燃尽图


3 代码/文档签入记录


4 最新模块代码及运行截图

考虑到后面可能需要做集群、负载均衡等,所以就需要会话共享,而shiro的缓存和会话信息,我们一般考虑使用redis来存储这些数据,所以,我们整合了shiro,同时整合了redis。
因为我们做的是前后端分离项目,所以我们采用token或者jwt作为跨域身份验证解决方案。

  • 运行截图

  • shiro相关:

    • JwtFilter (采用token或者jwt作为跨域身份验证解决方案)
@Component
public class JwtFilter extends AuthenticatingFilter {

    @Autowired
    JwtUtils jwtUtils;

    @Override
    protected AuthenticationToken createToken(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String jwt = request.getHeader("Authorization");
        if(StringUtils.isEmpty(jwt)){
            return null;
        }

        return new JwtToken(jwt);
    }

    @Override
    protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {

        HttpServerRequest request = (HttpServerRequest) servletRequest;
        String jwt = request.getHeader("Authorization");
        if(StringUtils.isEmpty(jwt)){

            return true;
        } else {

            //校验jwt
            Claims claim = jwtUtils.getClaimByToken(jwt);
            if (claim == null || jwtUtils.isTokenExpired(claim.getExpiration())){
                throw new ExpiredCredentialsException("token已失效,请重新登陆");
            }

            //执行登陆
            return executeLogin(servletRequest,servletResponse);
        }

    }

    @Override
    protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request, ServletResponse response) {

        HttpServletResponse httpServletResponse = (HttpServletResponse) response;

        Throwable throwable = e.getCause() == null ? e : e.getCause();

        Result result = Result.fail((throwable.getMessage()));

        String json = JSONUtil.toJsonStr(result);

        try{

            httpServletResponse.getWriter().print(json);
        } catch (IOException ioException){

        }

        return false;
    }
}
  • AccountRealm
@Component
public class AccountRealm extends AuthorizingRealm {

    @Override
    public boolean supports(AuthenticationToken token){
        return token instanceof JwtToken;
    }

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {

        JwtToken jwtToken = (JwtToken) token;

        System.out.println("");

        return null;
    }
}
  • JwtToken
public class JwtToken implements AuthenticationToken {

    private String token;

    public JwtToken(String jwt) {
        this.token = jwt;
    }

    @Override
    public Object getPrincipal() {
        return token;
    }

    @Override
    public Object getCredentials() {
        return token;
    }
}

5 每日总结

成员 总结
周睿晨
今天实现了简单的平台内容管理功能,感到难度还是挺高的,后面还要继续努力
樊培岩
学了前端ajax异步提交表单,让我的对前后端交互有更深的了解。
甘坤南
这段时间有很多其他的事情拖延了项目的进度,希望在敏捷冲刺阶段赶上来
黄嘉艺
第一天敲代码,感觉任务有点重,不过最后也能勉强完成,明天继续努力
梁嘉俊
前面做的不算好但是还是有收获,接下来在和组员沟通的基础上改进
钟思捷
项目的截止时间即将来临,今天安排好了后面六天的任务,以免最后这几天忙中出错
posted @ 2023-04-16 17:56  Rczzz  阅读(23)  评论(0编辑  收藏  举报