簡単な紹介
現在、RESTful
ほとんどが使用されているJWT
に認可チェックを行うためSpring Boot
に使用することができますShiro
し、JWT
簡単なアクセス許可と認証検証を行い、内とSpring Boot
ピット統合プロセスの多くに会いました。私たちは、独自の意志と一般的な使用シナリオは、統合する最も簡単な方法を開発しましたfastdep-shiro-jwt
。
送信元アドレス
私はあなたがどのようなスターは、フォローアップ他の依存を簡単に統合に参加するサポートすることができます願っています。
https://github.com/louislivi/fastdep
依存性の導入
Maven
<dependency>
<groupId>com.louislivi.fastdep</groupId>
<artifactId>fastdep-shiro-jwt</artifactId>
<version>1.0.2</version>
</dependency>
Gradle
compile group: 'com.louislivi.fastdep', name: 'fastdep-redis', version: '1.0.2'
プロファイル
application.yml
fastdep: shiro-jwt: filter: #shiro过滤规则 admin: path: /admin/** role: jwt # jwt为需要进行token校验 front: path: /front/**/** role: anon # anon为无需校验 secret: "6Dx8SIuaHXJYnpsG18SSpjPs50lZcT52" # jwt秘钥 # expireTime: 7200000 # token有效期 # prefix: "Bearer " # token校验时的前缀 # signPrefix: "Bearer " # token生成签名的前缀 # header: "Authorization" # token校验时的header头 # 以下对应为shiro配置参数,无特殊需求无需配置 # loginUrl: # successUrl: # unauthorizedUrl: # filterChainDefinitions:
ユーザー権限の設定クラス
@Component public class FastDepShiroJwtConfig extends FastDepShiroJwtAuthorization { @Autowired private UserRequestDataMapper userRequestDataMapper; @Override public SimpleAuthorizationInfo getAuthorizationInfo(String userId) { // 查询该用户下的所有权限(当前为示例仅查询用户ID真实环境替换为用户的权限值) Set<String> collect = userRequestDataMapper.selectOptions().stream().map(u -> u.getUserId().toString()).collect(Collectors.toSet()); SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo(); System.out.println(collect); // 当前值为 [1] // 添加用户权限到SimpleAuthorizationInfo中 simpleAuthorizationInfo.addStringPermissions(collect); return simpleAuthorizationInfo; } }
アプリケーション
@RestController
public class TestController {
@Autowired
private JwtUtil jwtUtil;
/**
* 当前为示例所以直接返回了token,真实环境为校验登录信息后再返回token即可
* @author : louislivi
*/
@GetMapping("front/login")
public String login() {
// ...校验登录信息是否正确
// 传入用户唯一标示
return jwtUtil.sign("1");
}
/**
* 当前为示例所以权限写的是用户ID 真实环境替换为权限key
* @author : louislivi
*/
@GetMapping("admin")
@RequiresPermissions("1")
public String jwt() {
return "ok!";
}
}
テスト
入手1token
2.テストの権限チェック
带token
- トークンなし
{
"msg": "Access denied !",
"code": 401
}
- トークンは、しかし、持ってき
SimpleAuthorizationInfo
ていない指定された権限を
{
"msg": "Subject does not have permission [1]",
"code": 403
}
スプレッド
時には、書き換える必要性に権限エラーチェックとリターン情報構造、この時間をカスタマイズする必要があるFastDepShiroJwtAuthorization
クラスのメソッドを。詳細については、参照してくださいここに
原則
使用ImportBeanDefinitionRegistrar
BeanDefinitionBuilder.genericBeanDefinition
ダイナミック注射はBean
、そのような統合は、単にそれの多くに依存していない、実際にソースを見て行くことができます興味を持っている非常に単純なのですか?
私は、あなたが小さな星に、オープンソースをサポートすることを願ってフォローアップ他の依存統合、および他のフレームワークとでも互換性を開発していきます。fastdep
してみましょうjava
簡単に依存している統合。ここにも同じような考えを持つ募集coder
プロジェクトを改善するために一緒に。