前面笔者已经说了,我们应用程序只是一个简单的例子,所以我们没有加入数据库的管理,只是简单在程序中限制用户的登入的名称和密码。这样做不是很好,最好还是用数据库,当然,实际商用系统当然要用到数据库了。为了弥补这个方面的不足,笔者双加入了Twitter的应用,也就是我们可以用Twitter的账号来登录了。

1.申请Twitter授权

在学习的一开始,笔者就已经说了,你的OS可以上国外的网站。当然还需要你有Twitter的账号。前面的一个章节,我们还学习了如何与Twitter对接,涉及到去Twitter网站设置的内容。这里也是一个,我们需要到Twitter网站上设置下面的属性。

2.控制层修改

1)        首先,我们需要在authentication的包下添加AuthenticatingSignInAdapter类,用于登录授权的鉴定。

package masterSpringMVC6.authentication;import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.UserProfile;
import org.springframework.social.connect.web.SignInAdapter;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.NativeWebRequest;/*** 连接到Twitter,登录* Created by OwenWilliam on 2016/5/22.*/
@Component
public class AuthenticatingSignInAdapter implements SignInAdapter {public static void authenticate(Connection<?> connection){//获取用户的提供信息UserProfile userProfile = connection.fetchUserProfile();String username = userProfile.getUsername();UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(username, null, null);SecurityContextHolder.getContext().setAuthentication(authentication);System.out.println("====:" +String.format("User %s %s connected.",userProfile.getFirstName(), userProfile.getLastName()));}@Overridepublic String signIn(String userId, Connection<?> connection, NativeWebRequest request) {authenticate(connection);return null;}
}
2)   最后,我们要定义视图界面访问时,可以登录到Twitter的登录界面。一样的是在authentication的包下添加SignupController类。
package masterSpringMVC6.authentication;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionFactory;
import org.springframework.social.connect.ConnectionFactoryLocator;
import org.springframework.social.connect.UsersConnectionRepository;
import org.springframework.social.connect.web.ProviderSignInAttempt;
import org.springframework.social.connect.web.ProviderSignInUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.request.WebRequest;/*** 通过Twitter来登录* Created by OwenWilliam on 2016/5/22.*/
@Controller
public class SignupController
{private final ProviderSignInUtils signInUtils;@Autowiredpublic SignupController(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository connectionRepository){signInUtils = new ProviderSignInUtils(connectionFactoryLocator, connectionRepository);}/*** 显示Twitter的登录页面* @param request* @return*/@RequestMapping(value = "/signup")public String singup(WebRequest request){Connection<?> connection = signInUtils.getConnectionFromSession(request);//如果没有连接,那就连接吧if (connection != null){AuthenticatingSignInAdapter.authenticate(connection);signInUtils.doPostSignUp(connection.getDisplayName(), request);}return "redirect:/profile";}
}

3.视图修改

我们只需要在login.html的页面下添加下面的代码就行了。

<form th:action="@{/signin/twitter}" method="POST" class="center"><div class="row"><button class="btn indigo" name="twitterSignin" type="submit">Connect with Twitter<i class="mdi-social-group-add left"></i></button></div></form>

最后,我们视图的显示应该是下面你所看到的。

4.总结

这一节我们添加了可以使用Twitter登录的按钮,同时也是为个按键添加了现在的功能。最后,如果我们点击Twitter,那么我们将看到下面的页面。

源码下载:git@github.com:owenwilliam/masterSpringMVC.git

SpringMVC之安全性(三)Twitter登入相关推荐

  1. python 淘宝滑块验证_pyppeteer硬钢掉淘宝登入的滑块验证

    完整代码我也不好公布,我可以给你们思路,以及部分代码动动脑子看看文档应该也能搞定 一.初始化chromium浏览器相关属性 browser = await pyppeteer.launch({'hea ...

  2. controll层跳转页面_以SpringMVC注解的形式 从Controller跳到另一个Controller 实现登入页面的跳转...

    以 SpringMVC 注解的形式从 Controller 跳到另一个 Controller 实现登入页面的跳转 使用 springmvc 注解的形式实现 ( 登录成功跳到一个 Controller ...

  3. (JS逆向专栏三)某玩游戏平台网站登入MD5加密

    声明: 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 名称:365玩游戏平台 目标:登入参数 加密类型:MD5 目标网址: ...

  4. CAS实现单点登入(三):登入提示消息修改

    我们看一下如果登入密码不对,cas默认的提示消息是什么? 密码不正确是默认提示的是:您提供的凭证有误. 实际中我们看到的大都是:密码错误的提示.我们修改成我们自己想要的提示语. 因为CAS异常处理逻辑 ...

  5. Openwrt 串口密码登入【ZT】

    http://blog.csdn.net/yicao821/article/details/46377787 为了安全性考虑,进行串口登入的时候也希望像ssh那样要求输入用户名和密码才能进入控制台. ...

  6. 最最最详细的springboot项目中集成微信扫码登入功能.步骤代码超级详细(OAuth2)

    说到登录注册,就会想到先要注册一个用户名,在进行登入,但是现在大多数的网站都集成了微信登入,不需要注册,给你一个二维码,微信一扫直接登录.这确实是十分便捷的.所以我们会尽量在项目中实现这一功能.减少用 ...

  7. 【转】扫描二维码登入安全吗?

    转载自 https://abcdabcd987.com/qrcode-login/ 昨天在知乎上看到了一个问题微信淘宝设计扫码登录的理由是什么,牺牲人性化来加强安全性?,本以为这是一个送分题,可是点开 ...

  8. 43.【Java 实现验证码获取 C++实现密码加密和删除和QQ登入系统】

    Java实现验证码信息 (一).简要概述: 1.思路分析 2.代码展示: 3.效果展示: (二).密码加密C++操作 1.基本思路和解析: 2.代码展示: (三).QQ登入系统: 1.建设QQ登入系统 ...

  9. ssh命令+免密码登入

    一.说明 ssh专为远程登录会话和其他网络服务提供安全性的协议 二.安装 sudo apt-get install openssh-server 三.免密码登入 1.生成公私钥 在A机器上输入ssh- ...

  10. 关于用户表设计及多用户登入限制

    1.数据表设计 用户通用信息表 CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`nickname` varchar(32) NOT ...

最新文章

  1. 生成建表脚本up_CreateTable
  2. python的文件流,初步网页爬虫,序列化和反序列化
  3. Dependency 'mysql:mysql-connector-java:5.1.28' not found【解决方案】
  4. 如何优化Hive SQL ??
  5. SAP UI5 ResponsiveGridLayout
  6. java个人支付系统(springboot)
  7. flex弹性布局操练2
  8. scala 随机生成整数_如何在Scala中以整数形式获取当前年份?
  9. DIY协同办公平台(C/S)系列4之通讯录篇
  10. centos下添加windows启动项
  11. qt designer 信号与槽_Qt信号与槽,一直无法执行自定义槽函数,是什么原因
  12. matlab gui系统设计,matlabgui系统设计
  13. 正确区分CRM、OA、协同办公平台
  14. 失传万年的PS致富经典(六)
  15. 编写代码的「八荣八耻」(上篇)
  16. windows7下使用mingw和msys编译JEPG源代码
  17. R和RStudio安装包下载
  18. pd.set_option 问题
  19. 科研用matlab还是python_科的解释|科的意思|汉典“科”字的基本解释
  20. 【阅读总结】Xen and the Art of Virtualization

热门文章

  1. setTimeout(), nextTick(),setImmediate()区别 ZT~
  2. 安装java项目开发环境
  3. 最近任务 react文章列表
  4. 博客开通了-里面有秘密哦
  5. web安全day36:Linux脚本编写自动修改IP地址
  6. Redis详解(二)——Redis基本操作
  7. MySQL存储过程(一)——存储过程理论基础
  8. IS-IS详解(六)——IS-IS LSP机制详解
  9. VMvare桥接网络连接不上解决办法
  10. js 浅拷贝和深拷贝