openstf / stf

Control and manage Android devices from your browser.
https://openstf.io
Other
13.34k stars 2.78k forks source link

How can I open device control page without login? #1004

Open scvjx opened 5 years ago

scvjx commented 5 years ago

HELLO, I have own login page and devices list page . How can the page redict the control page, after user click my devices list page link? the link as http://XXXX:7100/#!/control/988954353858554a59

yxcSini commented 5 years ago

file : lib\units\app\middleware\auth.js

var jwtutil = require('../../../util/jwtutil')
var urlutil = require('../../../util/urlutil')

var dbapi = require('../../../db/api')

module.exports = function(options) {
  return function(req, res, next) {
    if (req.query.jwt) {
      // Coming from auth client
      var data = jwtutil.decode(req.query.jwt, options.secret)
      var redir = urlutil.removeParam(req.url, 'jwt')
      if (data) {
        // Redirect once to get rid of the token
        dbapi.saveUserAfterLogin({
            name: data.name
          , email: data.email
          , ip: req.ip
          })
          .then(function() {
            req.session.jwt = data
            res.redirect(redir)
          })
          .catch(next)
      }
      else {
        // Invalid token, forward to auth client
        res.redirect(options.authUrl)
      }
    }
    else if (req.session && req.session.jwt) {
      dbapi.loadUser(req.session.jwt.email)
        .then(function(user) {
          if (user) {
            // Continue existing session
            req.user = user
            next()
          }
          else {
            // We no longer have the user in the database
            res.redirect(options.authUrl)
          }
        })
        .catch(next)
    }
    else {
      //set a fixed account to login 
      var token = jwtutil.encode({
        payload: {
          email: 'xxx@xxx.com'
          , name: 'xxxx'
        }
        , secret: options.secret
        , header: {
          exp: Date.now() + 24 * 3600
        }
      })
      res.redirect(urlutil.addParams(req.url, {
        jwt: token
      }))
      // res.redirect(options.authUrl)
    }
  }
}
thinkhy commented 5 years ago

Refer to this blog: https://blog.csdn.net/bhlice/article/details/79127687