我正在尝试创建一个cookie,并启用了HttpOnly标志.
虽然在Java和.Net中似乎有很多关于如何使用它的资源,但我需要在javascript中完成它.
这是我的(当前失败的)功能
createCookie = function(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; domain=my.domain.com; path=/; HttpOnly;";
Run Code Online (Sandbox Code Playgroud)
谢谢 -
我正在使用vanilla JavaScript编写Firebase应用程序.我正在使用Firebase身份验证和FirebaseUI for Web.我正在使用Firebase Cloud Functions来实现一个服务器,该服务器接收我的页面路由请求并返回呈现的HTML.我正在努力寻找在客户端使用经过身份验证的ID令牌来访问我的Firebase云功能所服务的受保护路由的最佳做法.
我相信我理解基本流程:用户登录,这意味着ID令牌被发送到客户端,在onAuthStateChanged回调中接收它,然后插入Authorization任何具有正确前缀的新HTTP请求的字段,然后检查当用户尝试访问受保护的路由时由服务器.
我不明白我应该对onAuthStateChanged回调中的ID令牌做什么,或者我应该如何修改我的客户端JavaScript以在必要时修改请求头.
我正在使用Firebase云功能来处理路由请求.这是我的functions/index.js,它导出app所有请求被重定向到的方法以及检查ID标记的位置:
const functions = require('firebase-functions')
const admin = require('firebase-admin')
const express = require('express')
const cookieParser = require('cookie-parser')
const cors = require('cors')
const app = express()
app.use(cors({ origin: true }))
app.use(cookieParser())
admin.initializeApp(functions.config().firebase)
const firebaseAuthenticate = (req, res, next) => {
console.log('Check if request is authorized with Firebase ID token')
if ((!req.headers.authorization || !req.headers.authorization.startsWith('Bearer ')) &&
!req.cookies.__session) {
console.error('No Firebase ID token was passed …Run Code Online (Sandbox Code Playgroud) javascript security firebase firebase-authentication firebaseui
很高兴知道因为我的基本注册/认证系统正在进行中.
所以我基本上得到了这个:
app.post('/login', function(req,res) {
Users.findOne({
email: req.body.email
}, function(err, user) {
if(err) throw err;
if(!user) {
res.send({success: false, message: 'Authentication Failed, User not found.'});
} else {
//Check passwords
checkingPassword(req.body.password, user.password, function(err, isMatch) {
if(isMatch && !err) {
//Create token
var token = jwt.sign(user,db.secret, {
expiresIn: 1008000
});
res.json({success: true, jwtToken: "JWT "+token});
} else {
res.json({success: false, message: 'Authentication failed, wrong password buddy'});
}
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
然后我保护我的/ admin路由和POSTMAN,每当我发送一个带有jwt的get请求时,一切都运行正常.
现在这里是棘手的部分,基本上当我要登录如果这是一个成功然后重定向我到管理页面,每次我尝试访问管理员/*路线我想发送到服务器我的jwToken但问题是,我该怎么做?我没有使用redux/flux,只使用react/react-router.
我不知道机械师的工作原理.
多谢你们
我正在使用 FastAPIRedirectResponse并尝试将用户从一个应用程序(域)重定向到另一个应用程序(域),并在 ; 中设置一些responsecookie 然而,cookie 总是被删除/不被传输。如果我尝试添加一些标头,我添加到的所有标头RedirectResponse也不会传输。
@router.post("/callback")
async def sso_callback(request: Request):
jwt_token = generate_token(request)
redirect_response = RedirectResponse(url="http://192.168.10.1/app/callback",
status_code=303)
redirect_response.set_cookie(key="accessToken", value=jwt_token, httponly=True)
redirect_response.headers["Authorization"] = str(jwt_token)
return redirect_response
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?先谢谢您的帮助。
有没有办法用jQuery读取标记为HTTPONLY检查的cookie?我有一个名为的cookie wishlist_cookie.
当我尝试
$.cookie('wishlist_cookie');
Run Code Online (Sandbox Code Playgroud)
NULL即使它有值,它也会返回.
我有一个JWT令牌,我想存储在cookie中.cookie需要至少设置HttpOnly标志,但我还想将Secure标志设置为true.
从角度文档我知道我可以将我的令牌存储在这样的cookie中:
// using 'ngCookies'
createToken(jwt_token) {
$cookies.put('jwt', jwt_token);
},
retrieveToken() {
return $cookies.get('jwt');
}
Run Code Online (Sandbox Code Playgroud)
但目前尚不清楚如何指定HttpOnly和Secure标志.该文件说有一个选项字段put()和get(),但是随后它提到 $cookiesProvider.我不确定它是如何适应的,或应该在哪里声明,或者每次我做一个put()或者是否需要设置get()?
它会是这样的:
createToken(jwt_token) {
$cookiesProvider['domain'] = 'www.mydomain.com';
$cookiesProvider['secure'] = true;
$cookies.put('jwt', jwt_token);
},
retrieveToken() {
$cookiesProvider['domain'] = 'www.mydomain.com';
$cookiesProvider['secure'] = true;
return $cookies.get('jwt');
}
Run Code Online (Sandbox Code Playgroud)
还是完全错了?我也没有看到任何HttpOnly标志,但我确实看到domain了我设置的标志www.mydomain.com.这相当于HttpOnly = true吗?
我正在我的 React 应用程序中设置 CSRF,并尝试访问我的 Node 服务器设置的 cookie。
我正在universal-cookie尝试读取cookies。我可以访问一些 cookie,但不是我需要的。
饼干看起来像:
csrf_token_secret=s%3AXfLOSTp6QNLTeRk;
Path=/; Expires=Tue, 20 Mar 2018 12:34:34 GMT; HttpOnly
_csrf=PqswrVPP4GUePCh-0fFewrHh; Path=/
Run Code Online (Sandbox Code Playgroud)
使用universal-cookie我尝试过:
const cookies = new Cookies();
console.log(cookies.get('csrf_token_secret'));
console.log(cookies.get('_csrf'));
Run Code Online (Sandbox Code Playgroud)
我可以_csrf正常访问,但无法获取 的值csrf_token_secret。
我需要做什么不同的事情才能获取此 cookie 的值?我猜这和国旗有关系HttpOnly?
我试图使用 angular 设置 cookie 的参数。我可以设置过期日期和安全参数,但不能设置 HttpOnly 参数。我已经使用以下方法使用角度 cookie 服务即“cookie.service.d.ts”设置了“过期”和“安全”
set(name: string, value: string, expires?: number | Date, path?: string, domain?: string, secure?: boolean, sameSite?: 'Lax' | 'Strict'): void;
Run Code Online (Sandbox Code Playgroud)
我找不到如何设置 HttpOnly 参数,因为 angular cookie 服务不包含这样的参数。设置 HttpOnly 参数的最佳方法。
粉煤灰..
我在实现 react cookies v^2 时遇到问题。我使用 webpack-dev-server 进行测试。
这是一个结束日志:
警告:失败的上下文类型:上下文cookies在 中标记为必需withCookies(App),但其值为undefined。
在 Provider
中的 withCookies(App)
/App.jsx:
import React, { Component } from 'react';
import { CookiesProvider, withCookies, Cookies} from 'react-cookie'
import {Route, Switch, BrowserRouter} from 'react-router-dom';
//import RequireAuth from './RequireAuth';
import NotFoundPage from './NotFoundPage';
import LandingPage from './LandindPage';
import WorkSpace from './WorkSpace';
import ActivationPage from './ActivationPage';
class App extends Component {
render() {
return (
<CookiesProvider>
<BrowserRouter>
<Switch>
<Route exact={true} path="/" component={LandingPage}/>
<Route path="/workspace" component={WorkSpace}/> …Run Code Online (Sandbox Code Playgroud) cookies ×7
javascript ×5
reactjs ×3
httponly ×2
jwt ×2
angular ×1
angularjs ×1
cross-domain ×1
express ×1
fastapi ×1
firebase ×1
firebaseui ×1
jquery ×1
passport.js ×1
python ×1
react-cookie ×1
react-redux ×1
react-router ×1
redirect ×1
security ×1