当前位置: 首页 > news >正文

专业优化网站建设建个微商城网站

专业优化网站建设,建个微商城网站,河南能源企业网站建设,wordpress建站网页无法运作几周前#xff0c;我写了一篇文章#xff0c;展示了我认为可以使用Spring Social编写的最简单的应用程序。 该应用程序读取并显示了Twitter用户的公共数据#xff0c;并被编写为Spring Social和社交编码领域的介绍。 但是#xff0c;让您的应用程序显示用户的公共数据只是故… 几周前我写了一篇文章展示了我认为可以使用Spring Social编写的最简单的应用程序。 该应用程序读取并显示了Twitter用户的公共数据并被编写为Spring Social和社交编码领域的介绍。 但是让您的应用程序显示用户的公共数据只是故事的一半而且在大多数情况下您将需要显示用户的私有数据。 在此博客中我将介绍您需要在应用程序的一两个页面上显示用户的Facebook或其他软件即服务SaaS提供程序数据的情况。 这里的想法是试图演示最小的和最简单的操作您可以将Spring Social添加到需要用户登录Facebook或其他SaaS提供商的应用程序中。 创建应用 要创建该应用程序第一步是使用SpringSource Toolkit仪表板的模板部分创建一个基本的Spring MVC项目。 这提供了一个Web应用程序可帮助您入门。 下一步是通过添加以下依赖项来设置pom.xml dependencygroupIdorg.springframework.security/groupIdartifactIdspring-security-crypto/artifactIdversion${org.springframework.security.crypto-version}/version /dependency!-- Spring Social -- dependencygroupIdorg.springframework.social/groupIdartifactIdspring-social-core/artifactIdversion${spring-social.version}/version /dependency dependencygroupIdorg.springframework.social/groupIdartifactIdspring-social-web/artifactIdversion${spring-social.version}/version /dependency!-- Facebook API -- dependencygroupIdorg.springframework.social/groupIdartifactIdspring-social-facebook/artifactIdversion${org.springframework.social-facebook-version}/version /dependency!-- JdbcUserConfiguration -- dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion${org.springframework-version}/version /dependency dependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdversion1.3.159/version /dependency!-- CGLIB, only required and used for Configuration usage: could be removed in future release of Spring -- dependencygroupIdcglib/groupIdartifactIdcglib-nodep/artifactIdversion2.2/version /dependency …显然您还需要在文件的lt; properties /部分中添加以下内容 spring-social.version1.0.2.RELEASE/spring-social.version org.springframework.social-facebook-version1.0.1.RELEASE/org.springframework.social-facebook-version org.springframework.security.crypto-version3.1.0.RELEASE/org.springframework.security.crypto-version 您会注意到我为spring-security-crypto添加了一个特定的pom条目这是因为我正在使用Spring 3.0.6。 在Spring 3.1.x中它已成为核心库的一部分。 唯一要注意的一点是还依赖于spring-jdbc和h2 。 这是因为Spring的UserConnectionRepository默认实现 JdbcUsersConnectionRepository使用它们因此即使该应用程序不对数据库持久化任何东西它们也是必需的据我所知。 班级 社交编码功能包括四个类其中一个是我从Keith Donald的Spring Social Quick Start Sample代码中摘录的 FacebookPostsController 社会背景 Facebook配置 UserCookieGenerator FacebookPostsController是应用程序的业务端负责获取用户的Facebook数据并将其推入模型中以供显示。 Controllerpublic class FacebookPostsController {private static final Logger logger LoggerFactory.getLogger(FacebookPostsController.class);private final SocialContext socialContext;Autowiredpublic FacebookPostsController(SocialContext socialContext) {this.socialContext socialContext;}RequestMapping(value posts, method RequestMethod.GET)public String showPostsForUser(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {String nextView;if (socialContext.isSignedIn(request, response)) {ListPost posts retrievePosts();model.addAttribute(posts, posts);nextView show-posts;} else {nextView signin;}return nextView;}private ListPost retrievePosts() {Facebook facebook socialContext.getFacebook();FeedOperations feedOps facebook.feedOperations();ListPost posts feedOps.getHomeFeed();logger.info(Retrieved posts.size() posts from the Facebook authenticated user);return posts;}} 如您所见从高级角度来看我们要实现的目标的逻辑非常简单 IF user is signed in THEN read Facebook data, display Facebook data ELSE ask user to sign in when user has signed in, go back to the beginning END IF FacebookPostsController将处理登录逻辑的任务委派给SocialContext类。 您可能会猜到我从Spring真正有用的ApplicationContext中得到了此类的想法。 这里的想法是有一个类负责将您的应用程序粘贴到Spring Social。 public class SocialContext implements ConnectionSignUp, SignInAdapter {/*** Use a random number generator to generate IDs to avoid cookie clashes* between server restarts*/private static Random rand;/*** Manage cookies - Use cookies to remember state between calls to the* server(s)*/private final UserCookieGenerator userCookieGenerator;/** Store the user id between calls to the server */private static final ThreadLocalString currentUser new ThreadLocalString();private final UsersConnectionRepository connectionRepository;private final Facebook facebook;public SocialContext(UsersConnectionRepository connectionRepository, UserCookieGenerator userCookieGenerator,Facebook facebook) {this.connectionRepository connectionRepository;this.userCookieGenerator userCookieGenerator;this.facebook facebook;rand new Random(Calendar.getInstance().getTimeInMillis());}Overridepublic String signIn(String userId, Connection? connection, NativeWebRequest request) {userCookieGenerator.addCookie(userId, request.getNativeResponse(HttpServletResponse.class));return null;}Overridepublic String execute(Connection? connection) {return Long.toString(rand.nextLong());}public boolean isSignedIn(HttpServletRequest request, HttpServletResponse response) {boolean retVal false;String userId userCookieGenerator.readCookieValue(request);if (isValidId(userId)) {if (isConnectedFacebookUser(userId)) {retVal true;} else {userCookieGenerator.removeCookie(response);}}currentUser.set(userId);return retVal;}private boolean isValidId(String id) {return isNotNull(id) (id.length() 0);}private boolean isNotNull(Object obj) {return obj ! null;}private boolean isConnectedFacebookUser(String userId) {ConnectionRepository connectionRepo connectionRepository.createConnectionRepository(userId);ConnectionFacebook facebookConnection connectionRepo.findPrimaryConnection(Facebook.class);return facebookConnection ! null;}public String getUserId() {return currentUser.get();}public Facebook getFacebook() {return facebook;}} SocialContext实现Spring Social的ConnectionSignUp和SignInAdapter接口。 它包含三个方法isSignedIn signIn execute 。 FacebookSignsController类调用isSignedIn来实现上述逻辑而Spring Social调用signIn和execute 。 从我以前的博客中您会记住OAuth需要在浏览器您的应用程序和SaaS提供程序之间进行多次旅行。 在进行这些操作时应用程序需要保存多个OAuth参数的状态例如client_idredirect_uri和其他参数。 通过将OAuth对话的状态映射到您的Webapp所控制的变量Spring Social将所有这些复杂性从应用程序中隐藏起来。 这是userId ; 但是不要以为它是用户名因为用户从未看到过它它只是一个唯一标识符该标识符将许多HTTP请求链接到Spring Social核心中的SaaS提供程序连接例如Facebook。 由于其简单性我遵循了Keith Donald的想法即使用cookie在浏览器和服务器之间传递用户ID来保持状态。 我还从Spring Social Quick Start中借用了他的UserCookieGenerator类来帮助我。 isSignedIn...方法使用UserCookieGenerator来确定HttpServletRequest对象是否包含包含有效用户ID的cookie。 如果这样做的话它还会找出Spring Social的UsersConnectionRepository是否包含链接到相同用户ID的ConnectionRepository 。 如果这两个测试都返回true则应用程序将请求并显示用户的Facebook数据。 如果两个测试之一返回false则将要求用户登录。 SocialContext是专门为该示例编写的并且包含足够的功能来演示我在此博客中所讨论的内容。 这意味着它目前有点粗糙并且可以使用尽管可以对其进行改进以涵盖与任何/许多提供程序的连接然后在不同的应用程序中重复使用。 最后要提到的类是FacebookConfig 它大致基于Spring Social示例代码。 此代码与示例代码之间有两个主要区别其中第一点是FacebookConfig类实现了InitializingBean接口。 这样可以将usersConnectionRepositiory变量注入到socialContext中 然后可以将socialContext作为其ConnectionSignUp实现注入到usersConnectionRepositiory中。 第二个区别是我正在实现providerSignInController...方法以提供正确配置的ProviderSignInController对象Spring Social将使用该对象登录Facebook。 我在此处所做的默认更改的唯一更改是将ProviderSignInController的postSignInUrl属性设置为“ / posts ”。 这是页面的URL将包含用户Facebook数据并在用户登录完成后被调用。 Configurationpublic class FacebookConfig implements InitializingBean {private static final Logger logger LoggerFactory.getLogger(FacebookConfig.class);private static final String appId 439291719425239;private static final String appSecret 65646c3846ab46f0b44d73bb26087f06;private SocialContext socialContext;private UsersConnectionRepository usersConnectionRepositiory;Injectprivate DataSource dataSource;/*** Point to note: the name of the bean is either the name of the method* socialContext or can be set by an attribute* * Bean(namemyBean)*/Beanpublic SocialContext socialContext() {return socialContext;}Beanpublic ConnectionFactoryLocator connectionFactoryLocator() {logger.info(getting connectionFactoryLocator);ConnectionFactoryRegistry registry new ConnectionFactoryRegistry();registry.addConnectionFactory(new FacebookConnectionFactory(appId, appSecret));return registry;}/*** Singleton data access object providing access to connections across all* users.*/Beanpublic UsersConnectionRepository usersConnectionRepository() {return usersConnectionRepositiory;}/*** Request-scoped data access object providing access to the current users* connections.*/BeanScope(value request, proxyMode ScopedProxyMode.INTERFACES)public ConnectionRepository connectionRepository() {String userId socialContext.getUserId();logger.info(Createung ConnectionRepository for user: userId);return usersConnectionRepository().createConnectionRepository(userId);}/*** A proxy to a request-scoped object representing the current users* primary Facebook account.* * throws NotConnectedException* if the user is not connected to facebook.*/BeanScope(value request, proxyMode ScopedProxyMode.INTERFACES)public Facebook facebook() {return connectionRepository().getPrimaryConnection(Facebook.class).getApi();}/*** Create the ProviderSignInController that handles the OAuth2 stuff and* tell it to redirect back to /posts once sign in has completed*/Beanpublic ProviderSignInController providerSignInController() {ProviderSignInController providerSigninController new ProviderSignInController(connectionFactoryLocator(),usersConnectionRepository(), socialContext);providerSigninController.setPostSignInUrl(/posts);return providerSigninController;}Overridepublic void afterPropertiesSet() throws Exception {JdbcUsersConnectionRepository usersConnectionRepositiory new JdbcUsersConnectionRepository(dataSource,connectionFactoryLocator(), Encryptors.noOpText());socialContext new SocialContext(usersConnectionRepositiory, new UserCookieGenerator(), facebook());usersConnectionRepositiory.setConnectionSignUp(socialContext);this.usersConnectionRepositiory usersConnectionRepositiory;}} 申请流程 如果您运行此应用程序2首先会看到一个主屏幕其中包含一个简单的链接邀请您显示帖子。 首次单击此链接时您将重定向到/ signin页面。 按下“登录”按钮指示ProviderSignInController与Facebook联系。 身份验证完成后 ProviderSignInController会将应用程序定向回/ posts页面这一次它将显示Facebook数据。 组态 为了完整起见我认为我应该提到XML配置尽管它没有太多因为我在FacebookConfig类上使用Spring注释Configuration 。 我已经从Spring Social导入了“ data.xml ”以便JdbcUsersConnectionRepository可以工作并添加了 context:component-scan base-packagecom.captaindebug.social / …用于自动接线。 摘要 尽管此示例应用程序基于将应用程序连接到用户的Facebook数据的基础但可以轻松地对其进行修改以使用任何Spring Social客户端模块。 如果您喜欢挑战请尝试使用所有中文版本的Sina-Weibo这是一个挑战但是Google Translate确实很有用。 1个Spring社交和其他OAuth博客 Spring Social入门 Facebook和Twitter幕后花絮 OAuth管理步骤 OAuth 2.0 Webapp流程概述 2该代码可在Github上找到https://github.com/roghughe/captaindebug.git 参考 Captain Debug的Blog博客中的JCG合作伙伴 Roger Hughes的Spring Social入门-第2部分 。 翻译自: https://www.javacodegeeks.com/2012/07/getting-started-with-spring-social-part.html
http://www.sadfv.cn/news/139344/

相关文章:

  • 做门户网站经验怎么自己做游戏软件
  • nginx 做网站新网网站后台登陆
  • 企业营销型网站推广电商网站开发教学视频
  • 廊坊网络公司网站六安马昌友
  • 正规网站建设价格费用电脑做系统网站
  • 建设银行网站查询密码设置姑苏区网络推广服务
  • 响应式网站预览网站推广对企业的优势
  • 微信公众号和网站建设方案大庆市建设大厦网站
  • 做网站入门看什么书wordpress手赚推广
  • 做模块高考题的网站wordpress 笔记本
  • 自己做网站是否要买云主机餐饮加盟
  • 蚂蚁中国网站建设公司网站维护与更新
  • 外贸网站建设谷歌推广外链网站大全
  • 苏州专业做网站公司哪家好wordpress重置主题设置
  • dj网站建设动漫制作专业专升本考什么专业
  • 网站结构是什么 怎么做wordpress 邮箱发布
  • 西宁网站搭建网站前置审批查询
  • 台州网站开发建设wordpress网站在哪里修改
  • 微信开放平台 网站开发设计模板主题为气流
  • 手机网站怎么放到桌面上做域名跳转非法网站负什么责任
  • 东莞专业营销网站建设推广网络营销和传统营销的区别和联系
  • 河北涿州建设局网站制作海报用什么软件
  • 资源库建设网站百度平台营销软件
  • qq业务代理网站建设南宁网站建设优势
  • 江西省上饶市网站建设公司商务类网站
  • 河南男科医院排名榜seo提升排名
  • python 快速做网站湖南做网站公司有哪些
  • 怎样做网站的排名会员制网站建设
  • 如何给网站增加内链京广桥做网站的公司
  • 嘉鱼网站建设多少钱网络营销学什么