此博客绝赞施工中......
to be continued......
“封印...竟然解开了!”
海风袭来了缠绵,却吹不落老人眼里的惊恐。
“老人家,什么封印?”游客见老人面色古怪,不禁好奇的问道。
“我的上帝!是她!是她!她又出来了!又出来了!”老人目光呆滞的看向大海的另一端,嘴里喃喃念道。
老人的举动,更加引来游客的好奇,又追问道:“她?她又是谁?老人家,您再说什么?”
老人呆呆的望了游客一眼,忽然,老人凶光大闪,干枯的双手狠狠抓向游客的手腕,老人拿捏之准,出招之快,游客没有丝毫反应,命门便被老人死死扣住。
游客心中一惊:“这老头竟然会使武当擒拿手!”
老人厉声道:“都怪你!都怪你!你知不知道,你犯下了滔天大罪!滔天大罪啊!”
游客道:“什么滔天大罪,不就是打坏一个玻璃杯么?有什么打紧的,我赔你一个便是了。你一直抓着我的手干嘛,我有男朋友的!”
老人甩开了游客的手腕,道:“哼!一个玻璃杯!你知道这个玻璃杯里面装的是什么吗!你赔得起吗!”
游客道:“是什么?”
老人道:“里面是…”老人说到一半便止住了。
游客道:“到底是什么?”
老人眼神空洞,仿佛这瞬间又苍老了几十岁,缓缓道:“罢了罢了,不关你的事,是我糊涂。你快走!赶紧走!走得越远越好!”
游客见老人面色凄苦,心中也是不忍,柔声道:“老人家,到底发生什么事情了?您告诉我,我毕业于新东方武术学院甜品系,并且专注小面二十年,做过的糍粑能绕地球两圈,从小老师便教导我们要讲文明,懂礼貌,助人为快乐之本,况且老人家您武功那么高强,您有什么难题可以告诉我,说不定我们可以一起解决。”
老人听了游客的一番话,僵硬的面容挤出一丝笑容,道:“小伙子,谢谢你。但这件事情不是你我二人可以解决的,你还是赶紧走吧,再不走就来不及了。”
游客听了老人此言,也不强人所难,道:“也罢,那老人家,我就先走了,我看您面色不好,我在国内有一位朋友,他精通医道,毕业于蓝翔技校音乐专科,是我国著名的反法西斯音乐家,如果您感觉打野有什么难处,我可以介绍给您认识。”
老人一听到“蓝翔技校”四个字,眼神散发出一道强烈的希望之光,再一次抓住游客的手,急道:“小伙子,你说的那人,是不是擅长正手反打,反手全垒打,原地踏步走落地无水花,号称冰天雪地三百六十度不穿内裤叼根烟旋转无死角的詹姆斯铁柱?”
游客正色道:“正是!”
“如果是他,那么有救了,有救了!我们村儿有救了!”老人老泪纵横,喜极而泣,又道:“敢问小兄弟,你能不能立刻将那位高人请来,什么条件我都尽力满足,我代表波罗的海狗蛋村全体村民,谢谢您的救命之恩。”老人说着,便朝游客跪下。
“老人家快快请起!我这便用BB机传呼他。”
过了片刻, 游客笑道:“老人家莫要担心,我朋友已经收到传呼,现在正在订机票,坐拖拉机过来,两天就到了。”
老人这才放下心来,双手不停的做着祷告:“感谢CCT…不对,是感谢上帝。”
老人祷告还未做完,原本风光明媚的海滩忽然变得阴沉起来,温柔的海风也变得狰狞,苍穹之上,一朵巨大的乌云伴随着雷鸣之声笼罩而来,一副“黑云压城城欲摧”的可怕光景。
老人脸色剧变,喝道:“她来了!她来了!你还愣着干什么,快走啊!你快走!想不到她来得如此之快!”
“想走?哼哼,已经来不及了!”一个女人的声音随海风而来,这声音仿佛能穿透一切,压着巨浪之声,回荡在天地之间,散发着令人恐惧的威压。
这一刻,老人惊呆了,游客吓尿了,游客一屁股坐倒在地,颤声道:“这…这是什么东西。”
老人此刻面色平静,心如止水,冷冷道:“便是你打坏了玻璃杯中释放出来的恶灵。”
游客吼道:“你TM在逗我吗?一个玻璃杯里面还封印恶灵?玄幻小说看多了吧!”
老人道:“这不是玄幻,是真人真事,是地地道道的本土人,自己讲自己的故事。”
“尼玛这是我们重庆卫视《雾都夜话》的开场白,这TM也抄袭,有没有公德心啊吗喂。”游客彻底暴走了!
老人道:“现在还有心情说笑,如果你那位朋友来,兴许还可以抵挡,但眼下只有我和你,九死一生!适才我叫离开,你不愿意,现在想走也走不了。没关系,黄泉路上正好可以做伴。”
游客站起身来,定了定神,面色也不似先前恐慌,沉声道:“既然如此,那便战吧!除魔卫道,也是我新东方的宗旨。”游客对着天空中那团黑云,大喝一声:“来吧,德玛西亚,人在塔……”
游客还未说完,一股巨浪袭来,结结实实的拍在游客身上,游客咒声大骂:“我靠,你是娜迦请来的逗比么!”
此时天边乌云涌动,汇聚成一道女人摸样的人形,随即传来一道冰冷的声音:“结束了。”
铺天盖地的海啸,夹杂着风雨雷电席卷而来,在这令人绝望的力量面前,任何人力都显得徒劳。游客和老人放弃了抵抗。
在这千钧一发之际,天空之上,一道金光闪动,在这金光的笼罩之下,整个空间,甚至时间都凝固了。
此时,天空之上传来一道人声,人声每说一个字,天空便凝聚出一个金色的字体。
“蓝!翔!技!校!皆!阵!列!在!前!”
人声轻轻一吐:“挖掘技!”
随即九个金色大字,幻化成九条金龙。
“土次方绞杀!”
顿时,九条金龙一声龙吟,如果方才恶灵的力量是仅仅让人绝望,那么此时这九条金龙带来的却是毁灭!
“恶灵,来感受搬砖工的怒火吧!”
“不!!!不!!!”恶灵一声愤怒与不甘的怪啸,在九条金龙的冲击之下,恶灵如同纸糊一般顷刻瓦解。
金龙消散,天光云开。
海滩又恢复了温柔明媚。
只剩下老人写下那块“玻璃碎片,危险!”在风中轻轻摇摆以及苍穹之上还还未消散的四个大字。
蓝翔技校。
AuthorizationServerConfiguration.java
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private JwtAccessTokenConverter jwtAccessTokenConverter;
@Autowired
private ClientDetailsService jdbcClientDetailsService;
@Autowired
private AuthorizationCodeServices authorizationCodeServices;
@Autowired
private ApprovalStore approvalStore;
@Autowired
private TokenStore tokenStore;
@Autowired
private OauthTokenEnhancer oauthTokenEnhancer;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
endpoints.authenticationManager(authenticationManager);
endpoints.accessTokenConverter(jwtAccessTokenConverter);
endpoints.authorizationCodeServices(authorizationCodeServices);
endpoints.approvalStore(approvalStore);
endpoints.tokenStore(tokenStore);
TokenEnhancerChain enhancerChain = new TokenEnhancerChain();
List<TokenEnhancer> delegates = new ArrayList<>();
delegates.add(oauthTokenEnhancer);
delegates.add(jwtAccessTokenConverter);
enhancerChain.setTokenEnhancers(delegates);
endpoints.tokenEnhancer(enhancerChain);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(jdbcClientDetailsService);
}
@Override
public void configure(AuthorizationServerSecurityConfigurer security) {
security.allowFormAuthenticationForClients()
.tokenKeyAccess("permitAll()")
.checkTokenAccess("permitAll()");
}
}
JwtTokenConfiguration.java
@Configuration
public class JwtTokenConfiguration {
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter() {
return new JwtAccessTokenConverter();
}
}
WebSecurityConfiguration.java
@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Autowired
private UserAuthService userAuthService;
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public AuthorizationCodeServices authorizationCodeServices() {
return new JdbcAuthorizationCodeServices(dataSource);
}
@Bean
public ApprovalStore approvalStore() {
return new JdbcApprovalStore(dataSource);
}
@Bean
public TokenStore tokenStore() {
return new JdbcTokenStore(dataSource);
}
@Bean
public OauthTokenEnhancer oauthTokenEnhancer() {
return new OauthTokenEnhancer();
}
@Bean
public ClientDetailsService jdbcClientDetailsService() {
return new JdbcClientDetailsService(dataSource);
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setPasswordEncoder(passwordEncoder());
authProvider.setUserDetailsService(userAuthService);
auth.authenticationProvider(authProvider);
}
}
OauthController.java
@RestController
@RequestMapping("/oauth")
public class OauthController {
@Autowired
private TokenEndpoint tokenEndpoint;
@GetMapping("/token")
public Oauth getAccessToken(Principal principal, @RequestParam Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
return tokenInfo(tokenEndpoint.getAccessToken(principal, parameters).getBody());
}
@PostMapping("/token")
public Oauth postAccessToken(Principal principal, @RequestParam Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
return tokenInfo(tokenEndpoint.postAccessToken(principal, parameters).getBody());
}
private Oauth tokenInfo(OAuth2AccessToken accessToken) {
DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken) accessToken;
token.getAdditionalInformation().remove("jti");
LinkedHashMap<String, Object> data = new LinkedHashMap<>(token.getAdditionalInformation());
data.put("accessToken", token.getValue());
return Oauth.build(data);
}
}
UserAuthMapper.java
public interface UserAuthMapper extends BaseMapper<UserAuth> {
}
Oauth.java
@Data
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Oauth {
private int code;
private String message;
private Object data;
public static Oauth build(Object data) {
return new Oauth(200, "成功", data);
}
}
UserAuth.java
@Data
@TableName("user_auths")
public class UserAuth {
private String userId;
private String identityType;
private String identifier;
private String credential;
}
OauthTokenEnhancer.java
public class OauthTokenEnhancer implements TokenEnhancer {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
User user = (User) authentication.getPrincipal();
Map<String, Object> map = new LinkedHashMap<>();
map.put("client_id", authentication.getOAuth2Request().getClientId());
map.put("username", user.getUsername());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(map);
return accessToken;
}
}
UserAuthService.java
@Service
public class UserAuthService implements UserDetailsService {
@Autowired
private UserAuthMapper userAuthMapper;
@Override
public UserDetails loadUserByUsername(String username) {
QueryWrapper<UserAuth> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(UserAuth::getIdentifier, username);
UserAuth userAuth = userAuthMapper.selectOne(queryWrapper);
if (userAuth == null)
throw new UsernameNotFoundException("账号不存在");
List<GrantedAuthority> list = AuthorityUtils.commaSeparatedStringToAuthorityList("ROOT_USER");
return new User(userAuth.getIdentifier(), userAuth.getCredential(), list);
}
}
OauthDemoApplication.java
@SpringBootApplication
@MapperScan("com.scut.oauthdemo.mapper")
public class OauthDemoApplication {
public static void main(String[] args) {
SpringApplication.run(OauthDemoApplication.class, args);
}
}
标签:return,游客,private,测试,new,老人,public
From: https://www.cnblogs.com/Junkman/p/16609306.html