页面授权登录(前台页面实现)

使用条件

前台页面通过Ajax方式调用业务接口时,如用户未登录,需要前台页面获取登录地址后完成重定向,完成用户授权功能。

接入步骤

1. 业务后台提供获取登录URL接口

可直接使用 wii\lib\models\user\actions\GetLoginUrlAction,例如:

public function actions()
{
    return [
        'get-login-url' => [
            'class' => 'wii\lib\models\user\actions\GetLoginUrlAction'
        ]
    ];
}

2. 配置用户登录Filter

相关filter配置如下:

## 用户登录
rule_user:
  controllers: ['user']
  filter:
    default:
      class: '\wii\lib\filters\AppUserFilter'
      types:
        wx_pub_account: {scope: 'snsapi_userinfo'}
    access:
      class: '\wii\filters\AccessControl'
      except: ['get-login-url']
      rules:
        - { allow: true, 'roles': ['@']}

3. 前台页面通过接口获取登录页面URL后并进行重定向

接口描述

  • 请求方式 GET

  • 请求地址 https://[APP_DOMAIN]/api/sample/user/get-login-url

输入参数

参数名称 必填 类型 描述
redirect_uri string 授权后重定向的回调链接地址
scope string 应用授权作用域。
state string 重定向后会带上state参数

输出参数

参数名称 类型 描述
login_url string 登录URL

示例

  • 输入示例
https://[APP_DOMAIN]/api/sample/user/get-login-url?redirect_uri=https://www.qq.com&state=13123
  • 输出示例
{
    "ret": 0,
    "msg": "OK",
    "errorcode": 0,
    "data": {
        "login_url": "https://tme.wltong.cn/api/user/oauth2/login?app_id=a1105A55B2569C003&redirect_uri=https%3A%2F%2Fwww.qq.com&response_type=code&type=app_admin&state=13123"
    }
}

注意事项

  • 当调用微信公众号授权地址,需要在微信客户端中发起请求,否则无法获取登录态URL。

results matching ""

    No results matching ""