pub trait ChimesAuthService<T> where
    T: Sized + ChimesAuthUser<T> + DeserializeOwned
{ fn permit(
        &self,
        ust: &Option<T>,
        req_method: &String,
        url_pattern: &String
    ) -> bool; fn authenticate(&self, token: &String) -> Option<T>; }

Required Methods

检查用户是否能够通过指定的URL 根据系统的配置来确定是否能够通过这个URL请求

  1. ust为None值 此时根据req_method和url_pattern查询到该url为bypass=anonymous的模式,则返回true 此时根据req_method和url_pattern查询到该url为bypass=user的模式,则返回false 此时根据req_method和url_pattern查询到该url为bypass=permit的模式,则返回false
  2. ust为Some值 此时根据req_method和url_pattern查询到该url为bypass=anonymous的模式,则返回true 此时根据req_method和url_pattern查询到该url为bypass=user的模式,则返回true 此时根据req_method和url_pattern查询到该url为bypass=permit的模式,则: a. 用户拥有可以访问该权限的角色:返回true b. 用户拥有可以访问该权限的资源: 返回true c. 用户不满足a和b,则返回false

检查Authentication信息是否为有效的用户信息 可以做如下处理

  1. token是一个唯一的字符串信息,通过以该token为key,从存储(数据库或Redis或内存)中查询到该Key所代表的用户信息;
  2. token是一个JWT Token,则解析该Token以获得登录的用户名等信息
  3. 再通过用户信息去查询用户详细信息
  4. 返回None表示该token已失效,返回Some表示该Token有效,且可以找到对应的帐户信息

Implementors