客户端请求api采用access token授权,客户端拿到token后,有效期是24小时。
由于各种原因,例如禁用某用户,想强制已授权的token过期失效,禁止该用户登录,请问该如何实现呢?
谢谢。

解决方案 »

  1.   

    在asp.net 判断了“登录”之外,你再判断“禁止”呗。自己应该设计业务逻辑,自己实现,不要动不动就去修改人家 asp.net 本身的功能(何况你也修改不了)。
      

  2.   

    自己实现是可以,我就是想知道OWIN 框架是否已经提供了失效的相应方法 。
      

  3.   

    自己实现是可以,我就是想知道OWIN 框架是否已经提供了失效的相应方法 。
      

  4.   

    自己实现是可以,我就是想知道OWIN 框架是否已经提供了失效的相应方法 。那就看它的文档。若有就用,若没有就自己花2、3分钟自己搞定。技术论坛不能当作搜索引擎啊。
      

  5.   

    自己实现是可以,我就是想知道OWIN 框架是否已经提供了失效的相应方法 。那就看它的文档。若有就用,若没有就自己花2、3分钟自己搞定。技术论坛不能当作搜索引擎啊。
    2、3分钟?
    高手啊!
    我已经搞了两三天了,没搞定才上来寻求帮助。
      

  6.   

    首先,要使当前Token失效,这个很简单,只要为该用户生成新的Token即可。
    然后,你要解决的问题是阻止用户获取Token,这样用户拿不到新的Token,自然就无法正常访问了。
      

  7.   

    现在的问题是,为该用户生成新的token, 但旧的token依然可以用。
    我的目的就是想让生成新的token的同时,让旧的失效。
      

  8.   

    不知道楼主解决没,分享下我的解决方法,重写AuthorizeAttribute 然后判断用户是否需要过期access_token。需要过期就return false。并且清空refresh_token信息。  @以专业开发人员为伍  也许你认为自己很牛逼,但是就是看不惯你那种牛逼哄哄的样子。fuck!
      

  9.   

    问题点在于:
    判断是否登录的必要条件是什么?
    1、如果是用户有Token就算登录,那这个设计太烂了,而且没有什么好的解决办法,只能把过期的Token在服务器上保存为黑名单,
    每次用户进入都判断在不在黑名单内。
    2、如果Token要在服务器上读取一个数据,存在才算登录,那就简单了,直接删除服务器上的这个Token数据就好了。
      

  10.   

    token本身会在服务器上持久化
    所以要判断token是否失效,可以考虑在本地定时同步数据库的token到缓存,然后应用只是简单的跟缓存里token进行判断,如果没有就是失效了
      

  11.   

    Token是谁颁发的,失效就应该由谁来定义。而不是由使用方定义失效。
    使用方应该在拿到Token后换取Claims来基于ABAC设定访问权限而不是直接使用Token。建议看看OAuth2.0的一些文档再做authorize服务,你哪怕不实现全部标准起码也应当实现一些基本的功能。不然你这发个钥匙就能开门的旅馆还不回收钥匙…………
      

  12.   

    更正一下是Authenticate服务不是Authorize,Authorize就又是另外一个故事了。
      

  13.   

    顺便说一下jwt这种Token是过时失效的,没有强制失效的方法,这是这种Token的设计决定的。