use of org.noear.solon.annotation.Get in project solon by noear.
the class SocialController method redirect.
/**
* 第三方跳转方法
*/
@Get
@Mapping("/social/{platform}")
public Object redirect(Context ctx, HttpServletRequest request, HttpServletResponse response, String platform, String next, String code, String state) throws IllegalAccessException {
// 验证 二次回调地址 是否合法
if (next == null) {
// 如果没指定回调地址,可能是第三方回调的结果
next = (String) this.cacheService.get(this.getKey(state));
// 如果 Callback 所属的 State 已过期
if (next == null) {
throw new IllegalStateException();
} else {
// 填入缺失的 next 参数
ctx.paramSet("next", next);
}
} else {
if (!this.validNext(next)) {
throw new IllegalAccessException();
}
}
// 构建 社会化登录 Payload
SocialConfig socialConfig = new SocialConfig().setPlatform(platform).setState(UuidUtils.getUUID()).setJustAuthConfig(this.japProperties.getCredentials().get(platform));
// 将 State -> Callback 存入缓存
this.cacheService.store(this.getKey(socialConfig.getState()), next, 300);
// 请求登录
JapResponse japResponse = this.socialStrategy.authenticate(socialConfig, new JakartaRequestAdapter(new HttpServletRequestWrapperImpl(ctx, request)), new JakartaResponseAdapter(response));
return this.simpleResponse(ctx, japResponse);
}
use of org.noear.solon.annotation.Get in project solon by noear.
the class LogoutController method logout.
@Get
@Mapping("logout")
public void logout(Context ctx, HttpServletRequest request, HttpServletResponse response) {
IdsResponse<String, String> idsResponse = this.logoutEndpoint.logout(new JakartaRequestAdapter(request), new JakartaResponseAdapter(response));
ctx.redirect(idsResponse.getData());
}
use of org.noear.solon.annotation.Get in project solon-examples by noear.
the class LoginController method getValidationImg.
/*
* 获取验证码图片
*/
@Get
@Mapping(value = "/login/validation/img", method = MethodType.GET, produces = "image/jpeg")
public void getValidationImg(Context ctx) throws IOException {
// 生成验证码存入session
String validation = RandomUtils.code(4);
Session.current().setValidation(validation);
ctx.sessionState().sessionPublish();
// 获取图片
BufferedImage bufferedImage = ImageUtils.getValidationImage(validation);
// 禁止图像缓存
ctx.headerSet("Pragma", "no-cache");
ctx.headerSet("Cache-Control", "no-cache");
ctx.headerSet("Expires", "0");
// 图像输出
ImageIO.setUseCache(false);
ImageIO.write(bufferedImage, "jpeg", ctx.outputStream());
}
use of org.noear.solon.annotation.Get in project Water by noear.
the class LoginController method getValidationImg.
/*
* 获取验证码图片
*/
@Get
@Produces("image/jpeg")
@Mapping("/login/validation/img")
public void getValidationImg(Context ctx) throws IOException {
// 生成验证码存入session
String validation = RandomUtils.code(4);
Session.current().setValidation(validation);
ctx.sessionState().sessionPublish();
// 获取图片
BufferedImage bufferedImage = ImageUtils.getValidationImage(validation);
// 禁止图像缓存
ctx.headerSet("Pragma", "no-cache");
ctx.headerSet("Cache-Control", "no-cache");
ctx.headerSet("Expires", "0");
// 图像输出
ImageIO.setUseCache(false);
ImageIO.write(bufferedImage, "jpeg", ctx.outputStream());
}
use of org.noear.solon.annotation.Get in project solon by noear.
the class AuthorizationController method authorizeGet.
@Get
@Mapping("authorize")
public void authorizeGet(Context ctx, HttpServletRequest request) throws IOException {
// authorize
IdsResponse<String, String> idsResponse = this.authorizationEndpoint.authorize(new JakartaRequestAdapter(request));
ctx.redirect(idsResponse.getData());
}
Aggregations