首页   注册   登录

sutra

V2EX 第 139623 号会员,加入于 2015-09-24 09:54:14 +08:00
今日活跃度排名 19243
Markdown image testing
沙盒  •  sutra  •  56 天前  •  最后回复来自 sutra
1
微信小程序的 logo 都变成了“暂时无法查看”了
全球工单系统  •  sutra  •  2018-05-28 17:10:38 PM  •  最后回复来自 sutra
5
用 awk 语言写的转换 gfwlist 为 dnsmasq 配置的脚本
Chamber  •  sutra  •  2016-10-06 12:43:55 PM  •  最后回复来自 majinjing3
1
sutra 最近回复了
3 天前
回复了 shazh520 创建的主题 Java 聊聊 spring boot 后端大家如何玩权限?
我是自己实现了一个 HttpSessionIdResolver 来让 CookieHttpSessionIdResolver 和 HeaderHttpSessionIdResolver 自动选择:

```
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.http.MediaType;
import org.springframework.security.web.util.matcher.MediaTypeRequestMatcher;
import org.springframework.security.web.util.matcher.OrRequestMatcher;
import org.springframework.security.web.util.matcher.RequestHeaderRequestMatcher;
import org.springframework.security.web.util.matcher.RequestMatcher;
import org.springframework.session.web.http.CookieHttpSessionIdResolver;
import org.springframework.session.web.http.HeaderHttpSessionIdResolver;
import org.springframework.session.web.http.HttpSessionIdResolver;
import org.springframework.web.accept.ContentNegotiationStrategy;

public class SmartHttpSessionIdResolver implements HttpSessionIdResolver {

protected final HttpSessionIdResolver browser;

protected final HttpSessionIdResolver api;

private final RequestMatcher browserMatcher;

public SmartHttpSessionIdResolver(
ContentNegotiationStrategy contentNegotiationStrategy) {
this.browser = new CookieHttpSessionIdResolver();
this.api = HeaderHttpSessionIdResolver.xAuthToken();

MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(
contentNegotiationStrategy, Arrays.asList(MediaType.TEXT_HTML));
matcher.setIgnoredMediaTypes(Collections.singleton(MediaType.ALL));

RequestHeaderRequestMatcher javascript = new RequestHeaderRequestMatcher(
"X-Requested-With", "XMLHttpRequest");

this.browserMatcher = new OrRequestMatcher(
Arrays.asList(matcher, javascript));
}

/**
* {@inheritDoc}
*/
@Override
public List<String> resolveSessionIds(HttpServletRequest request) {
return getResolver(request).resolveSessionIds(request);
}

/**
* {@inheritDoc}
*/
@Override
public void setSessionId(HttpServletRequest request, HttpServletResponse response, String sessionId) {
getResolver(request).setSessionId(request, response, sessionId);
}

/**
* {@inheritDoc}
*/
@Override
public void expireSession(HttpServletRequest request, HttpServletResponse response) {
getResolver(request).expireSession(request, response);
}

protected HttpSessionIdResolver getResolver(HttpServletRequest request) {
return this.browserMatcher.matches(request) ? this.browser : this.api;
}

}
```
我没能看懂你的问题。
如果只是按照 star 数字的增长速度排序的话,是不是其实是在讲金字塔底层(越是底层,参与的人越多)的项目排到了最前面?
找一个能用 curl 命令上报的 DDNS 服务就可以了,没必要非得用 aliyunDDNS。
59 天前
回复了 yoqu 创建的主题 分享创造 写了款帮助 spring boot 启动的 maven 插件
我用的 commons-daemon 来启动的,然后做了个 FreeBSD 的 rc 脚本模板: https://github.com/sutra/spring-boot-daemon
63 天前
回复了 Shoestrong 创建的主题 程序员 Linux 用 ls 么
xattr
67 天前
回复了 spirit1431007 创建的主题 问与答 awsl,我 dd 了移动硬盘
试试 Zero Assumption Recovery
67 天前
回复了 aoscici2000 创建的主题 Java 返回值里 offset, total 之类一般放哪?
直接用了 `spring-data` 里的 `org.springframework.data.domain.Page<T>`。
68 天前
回复了 ooToo 创建的主题 Apple airpods 续航废了, 只能买新的吗?
右耳使用不到 5 分钟就掉线,收入盒子几秒钟再拿出来用就又能维持几分钟。左耳基本正常。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3020 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 15ms · UTC 11:30 · PVG 19:30 · LAX 03:30 · JFK 06:30
♥ Do have faith in what you're doing.