商城系统社交登录

如果网站用户量很大的情况,所以我们为网站引入社交登录模块,简化网站的登录与注册逻辑,为用户带来良好的体验。
码云授权三方登录。
我们要遵循OAuth2.0:OAuth是一个开放标准,通过用户授权第三方网站权限访问用户在其他站点上存储的用户信息,对于用户相关的OpenAPI(获取用户信息等…),为了保护用户的安全和隐私,第三方网站访问用户信息前,必须显示的向用户征求授权

1.gitee上创建应用

在这里插入图片描述

2.数据管理->第三方应用

在这里插入图片描述

3.创建应用

在这里插入图片描述

4.创建完成后

在这里插入图片描述

参考gitee的OAuth文档

gitee OAuth文档:https://gitee.com/api/v5/oauth_doc#/list-item-1

流程图:
在这里插入图片描述

项目实际流程图:微博替换为Gitee

在这里插入图片描述

详细介绍:

在这里插入图片描述

准备工作

1.新建一个Gitee

@Data
public class Gitee {

    public String CLIENTID;

    public String CLIENTSECRET;

    public String URL;
}

2.GiteeConfigProperties类

@Component
@ConfigurationProperties(prefix = "gitee.oauth")
@Data
public class GiteeConfigProperties {

    public String clientid;

    public String clientsecret;

    public String callback;


}

3.GiteeConfig类

@Configuration
public class GiteeConfig {

    @Bean
    public Gitee gitePro(GiteeConfigProperties e){
        Gitee gitee = new Gitee();
        gitee.setCLIENTID(e.getClientid());
        gitee.setCLIENTSECRET(e.getClientsecret());
        gitee.setURL(e.getCallback());
       return gitee;
    }
}

4.applicaiton.yaml配置你的clientid,clientsecret,callback

gitee:
  oauth:
    clientid: 1df235cb5b450e597a409f9c**********0523f851bd675e5210196faa32b90a0565
    clientsecret: ff443864f0ee97155***********10d1f6c0c3abaf97adfc62751f4ef
    callback: ****************

项目中各步对应的代码

AB:> AB:我们将我们的gitee按钮导向https://gitee.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code&scope=user_info%20projects%20pull_requests这个地址

这里我让前端代码指向该地址,到后端然后获取到配置文件中的值,新建一个GiteeController类


前端代码
<a th:href="@{gitee/auth}" class="link" title="Gitee登录"><i class="iconfont icon-gitee"></i>gitee登录</a>
后端代码
 /**
     * 将用户导向到认证页面
     */
    @GetMapping("/gitee/auth")
    public String qqAuth(HttpSession session) {
        // 用于第三方应用防止CSRF攻击
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        session.setAttribute("state", uuid);

        // Step1:获取Authorization Code  //scope=user_info 就是用户授权信息
        String url = "https://gitee.com/oauth/authorize?response_type=code" +
                "&client_id=" + gitee.getCLIENTID() +
                "&redirect_uri=" + URLEncoder.encode(gitee.getURL()) +
                "&scope=user_info";

        System.out.println(url);
        //将我们导向到gitee认证服务器
        return "redirect:"+url;
    }

C:用户同意授权后,通过回调地址(上个请求携带的redirect_uri),将用户授权码传给应用服务器。
D:应用服务器使用 access_token API 向 码云认证服务器发送post请求传入 用户授权码 以及 回调地址( POST请求 )
https://gitee.com/oauth/token?grant_type=authorization_code&code={code}&client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}


    /**
     * 获取Access Token
     * post 
     * url:String url = "https://gitee.com/oauth/token?grant_type=authorization_code" +
                "&client_id=" + gitee.getCLIENTID() +
                "&client_secret=" + gitee.getCLIENTSECRET() +
                "&code=" + code +
                "&redirect_uri=" + gitee.getURL();
     */
    public static JSONObject getAccessToken(String url) throws IOException {
        HttpClient client = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36");
        HttpResponse response = client.execute(httpPost);
        HttpEntity entity = response.getEntity();
        if (null != entity) {
            String result = EntityUtils.toString(entity, "UTF-8");
            return JSONObject.parseObject(result);
        }
        httpPost.releaseConnection();
        return null;
    }

E:码云认证服务器返回 access_token(上步返回),应用服务器根据得到的access_token通过Open Api去获取用户信息

应用通过 access_token 访问 Open API 使用用户数据。
在这里插入图片描述

/**
    /**
     * 获取用户信息
     * get
     */
    public static JSONObject getUserInfo(String url) throws  IOException {
        JSONObject jsonObject = null;
        CloseableHttpClient client = HttpClients.createDefault();

        HttpGet httpGet = new HttpGet(url);
        httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36");
        HttpResponse response = client.execute(httpGet);

        HttpEntity entity = response.getEntity();

        if (entity != null) {
            String result = EntityUtils.toString(entity, "UTF-8");
            jsonObject = JSONObject.parseObject(result);
        }

        httpGet.releaseConnection();
        System.out.println("用户信息:"+jsonObject);
        return jsonObject;
    }


项目图:
1.
在这里插入图片描述
2.将用户导到gitee的认证服务器
在这里插入图片描述
3.用户同意授权
在这里插入图片描述
4.成功跳到商城首页
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
明日电子商城使用说明书 系统介绍 在线购物已经成了一种时尚,它为人们提供了网络购物的方便性,使顾客可以足不出户就可以购买商品,因其具有方便、安全、友好的交互等特性,顾客群体也逐渐庞大,尤其是网络时代中成长的年轻人。现在流行的电子商务有B2B,B2C,C2C,G2C等类型。欣想电子商城采用的是B2B类型,它可以使顾客通过网络购物、浏览商品、查询订单、查看公告和销售排行等。通过对一些典型电子商城网站的考察、分析,并结合企业要求以及实际的市场调查,要求本系统具有以下功能:  美观友好的操作界面,能保证系统的易用性。  规范、完善的基础信息设置。  商品分类详尽,可按不同类别查看商品信息。  按商品大类及商品名称进行模糊查询。  实现网上购物。  新品及特价商品展示。  商品销售排行。 操作注意事项 (1) 用户注册登录后,可进行商品购买、商品信息查看以及订单查询操作。 (2) 进入后台用户名:mr;密码:mrsoft 操作流程 1.前台 (1)用户注册登录后,可进行会员资料修改、订单查询及购买商品操作,如图1所示。 图1 会员登录 (2)单击“新品上架”导航按钮,对新品上架信息进行查询操作。 (3)单击“特价商品”导航按钮,对特价商品信息进行查询操作。 (4)单击“销售排行”导航按钮,对销售排行信息进行查询操作。 2.后台 所有前台的信息都在后台进行、添加、修改及删除等管理。 (1)单击“后台管理”按钮,输入用户名及密码进入后台管理界面,如图2所示。 图2 后台登录 (2)单击“商品管理”/“商品大类管理”、“商品小类管理”、“添加信息管理”按钮,对商品大类信息、商品小类信息和商品信息进行添加、修改、删除及查询操作,如图3所示。 图3 商品类别及商品信息添加 注意:在添加商品信息时,图片文本框中输入图片的名称及扩展名,并将图片拷贝到运行程序的images\goods文件夹中。例如TM\07\LiXiangShop\images\goods路径。 (3)单击“会员管理”按钮,对会员信息进行查看、冻结及解冻操作,如图4所示。 图4 会员管理 (4)单击“订单管理”按钮,对订单信息进行查看及执行操作,如图5所示。 图5 订单管理 (5)单击“公告管理”按钮,对公告信息进行添加、删除及查看操作,如图6所示。 图6 公告管理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值