通过回调路由在服务器上播种会话

问题描述

尝试在Sapper中实现第三方oauth身份验证。

据我了解,以下是建议的种子播种和同步模式 服务器和客户端上的会话存储:

// In login.svelte
<script>
  import { stores } from '@sapper/app';
  const { session } = stores();

  async function login() {
    const res = await fetch('auth',{
      ...
    });

    if (res.ok) {
      session.update(store => ({
        ...store,user: await res.json()
      });
    } else {
      // handle the error
    }
  }
</script>

{#if $session.user}
  <h1>Welcome back {$session.user.name}!</h1>
{:else}
  <button on:click={login}>log in</button>
{/if}
// In auth.js
export function post(req,res) {
  req.session.token = req.body.token;
  res.end(JSON.stringify({ token: req.body.token }));
}

就我而言,身份验证系统是由第三方实现的, API,其网站重定向用户重定向登录/注册 页并在成功登录重定向到“回调”路由。

在回调路由中,我需要设置会话并重定向,但

  1. 如果我设置了req.session和res.redirect会话, 没有设置。
req.session.token = token;
res.redirect('/profile');
  1. 如果我设置了req.session然后设置了next()会话 但无法重定向到预期的“个人资料”页面
req.session.token = 'parsed.token.wrwerwe9rwer';
return next();

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...