第2篇Scrum冲刺博客
目录
1 每天举行站立式会议
1.1 当天站立式会议照片
1.2 昨天已完成的工作
成员 | 任务 |
---|---|
1.3 今天计划完成的工作
成员 | 任务 |
---|---|
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 每日总结
成员 | 总结 |
---|---|