shiro 和webservice cxf版权限控制解决方案
说明:
1:webservice 是无状态的,所以每次登陆要求传入用户名和密码
2:由于涉及 每次都要登陆和验证,如果接口频繁调用就会形成数据库压力过大, 需要用到缓存
3:本教程用到springAOP需要一定基础
**
基础解决方案:(原理,不推荐使用)
**
1:在每一个接口类里面直接调用login方法,然后进行授权验证方法(如isPermitted)
2:开启认证模式缓存(不然会每次登陆就进入数据库认证数据库请求太频繁,授权方法缓存也获取不到)
3:到这来就可以调用接口了(说明:Realm是还是用的原来web网站realm,不要定义多个Realm)
最终解决方案(推荐):
问题:
一个系统Webservice接口方法有很多,如果每个接口都写接口权限验证的代码会造成代码冗余,耦合性高。
使用spring AOP 注解 解决 就像 shiro注解一样
直接上代码
1:自定义BaseMessage父类 消息类(用于接口提示 成功 错误等消息)
/**
* 权限基类
*
* @author lw冒冒
*/
public class BaseMessage {
//代码
private int code;
//成功或错误信息
private String message;
//详细描述
private String detail;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}