Content Table

小程序 Tips

开发环境

腾讯官方提供的微信web开发者工具的编辑功能是至今见过最难用的编辑器之一,我们可以使用其他的编辑器例如 AtomSublimeText 等编辑,保存后微信web开发者工具会自动的发现文件变化了,然后自动刷新小程序,看到修改后的效果。

Spring Security 自动登录

Spring Security 怎么判断一个用户是否登录了呢?

非常的简单,只要 Spring Context 中存储了一个 Authentication 的对象,那么 Spring Security 就认为用户已经登录。所以所有的操作都是为了往 Spring Context 中存储了一个 Authentication 的对象,这样就实现了自动登录的功能:

1
2
3
User user = new User(...);
Authentication auth = UsernamePasswordAuthenticationToken(user, user.getPassword(), user.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(auth);

下面的代码都是为了结合某些业务一起介绍的,写的很冗杂,不管怎么做,核心功能只要围绕上面这几行代码即可。


前面的实现可以使用表单进行登陆了,但是某些时候需要自动登录,例如使用 QQ 的第三方登录,服务器收到登陆成功的回调后,需要在我们的系统中继续使用本地账号登陆才行,这时就会需要实现自动登录的功能,还有使用 AJAX 等也不能使用表单登陆,也是需要调用登陆的接口才可以。

为了提供登陆的接口,需要实现 AuthenticationProvider 进行登陆,不再使用 Spring Security 的默认实现。当然实现了自动登录后,并不会影响 Spring Security 的表单登陆。

Qt 显示 GIF

Qt 中,静态图片 PNG,JPG 等可以用其创建 QPixmap,调用 QLabel::setPixmap() 来显示,但是能够具有动画的 GIF 却不能这么做,要在 QLabel 上显示 GIF,需要借助 QMovie 来实现。

小程序轮播

微信小程序使用 Swiper 实现图片的轮播,Swiper 的结构如下:

1
2
3
4
5
6
7
8
9
<swiper indicator-dots="{{indicatorDots}}"
circular="{{circular}}"
autoplay="{{autoPlay}}"
interval="{{interval}}"
duration="{{duration}}">
<swiper-item><image src=""/></swiper-item>
...
<swiper-item><image src=""/></swiper-item>
</swiper>

swiper-item 的子标签可以是 image,或者 navigator 中放图片实现点击跳转等。

小程序滚动

微信小程序使用 scroll-view 实现滚动区域,有水平滚动和垂直滚动,scroll-view 的结构如下:

1
2
3
4
5
<scroll-view>
<view></view>
...
<view></view>
</scroll-view>

设置 WXSS 的时候,需要注意使用 font-size: 0 和 white-space: nowrap