簡単な2つのステップでshiroの構成と使用を迅速に実現し、ログイン検証、ロール検証、権限検証、shiroログインログアウトプロセスを含む
6495 ワード
前言:
shiroはその簡単さ、信頼性、実現の容易さから現在最もよく使われているセキュリティフレームワークとなっているが、この文章ではspringベースのshiroの詳細な構成とログインログアウト機能の使用について簡潔明瞭に述べるほか、慣例に基づいてshiroの概略構成の使用フローを文章の最後にまとめる.この文章は、もともとシロがこんなに簡単だったという錯覚を与えてくれることを願っています.
注意:この文章の最初はspring+mybatisの完全な開発環境に構築されており、shiro以外の構成はほとんど触れません.自分で--eguidのオリジナルの文章をしっかりと行います
shiro補足およびshiro注釈問題解決文章(皆さんに役に立つことを望んでいます):shiroとspringの統合詳細とspringプロジェクトにおけるshiro注釈が有効でない解決方法
一、依存jarパッケージ
この文章はshiro-1.4を使用します.バージョン0
1、shiro公式ダウンロードアドレス:http://shiro.apache.org/download.html
2、maven依存項目:
なぜmavenはshiro-springという依存項目だけでよいのか、shiro-springはshiro-coreとshiro-webの2つのパケットに依存するため、shiro-coreとshiro-web、およびこの2つのパケットに依存する項目を自動的に継承します.
二、springに基づく配置方式
1、shiroフィルタの配置
2、springに基づくshiro配置
注意事項:springはコンテキストをロードするとき、注釈をスキャンしていません.カスタムrealmではspringの注釈を使用しているので、shiroのカスタムrealmの前に注釈スキャンを行う必要があります.
(1)springでのshiro完全構成
この構成を変更する必要があるのは
shiroフィルタとshiroセキュリティデータソース(realm).
フィルタには注釈がはっきりと書かれており、anonは匿名アクセスを表し、authcはログイン検証、権限検証、ロール検証が必要であることを示しています.
カスタムrealmインプリメンテーションは以下を参照してください.
(2)カスタムrealmセキュリティデータソース
三、shiroログインとログアウトプロセスの実現
四、shiro配置使用総括
1、web.xmlでshiroを構成するフィルタ
2.springアプリケーションコンテキスト(例:applicationContext.xml)でshiroフィルタやカスタムrealmなどのその他の補助構成を構成する.
shiroフィルタは、ログイン検証、ロール検証、権限検証が必要なインタフェース、検証が不要なインタフェースを構成できます.カスタムrealmは、shiroベリファイアにユーザー情報、ユーザーロール情報、ユーザー権限情報などのデータソースを提供し、shiroに3つの検証をさせます.
3、shiroは完全なログインプロセスとログアウトプロセスを提供し、既存のログインとログアウトプロセスに対して一定の修正を行うことは避けられない.
以上、皆さんのお役に立てばと思います.--自分をしっかりしろ
shiroはその簡単さ、信頼性、実現の容易さから現在最もよく使われているセキュリティフレームワークとなっているが、この文章ではspringベースのshiroの詳細な構成とログインログアウト機能の使用について簡潔明瞭に述べるほか、慣例に基づいてshiroの概略構成の使用フローを文章の最後にまとめる.この文章は、もともとシロがこんなに簡単だったという錯覚を与えてくれることを願っています.
注意:この文章の最初はspring+mybatisの完全な開発環境に構築されており、shiro以外の構成はほとんど触れません.自分で--eguidのオリジナルの文章をしっかりと行います
shiro補足およびshiro注釈問題解決文章(皆さんに役に立つことを望んでいます):shiroとspringの統合詳細とspringプロジェクトにおけるshiro注釈が有効でない解決方法
一、依存jarパッケージ
この文章はshiro-1.4を使用します.バージョン0
1、shiro公式ダウンロードアドレス:http://shiro.apache.org/download.html
2、maven依存項目:
org.apache.shiro
shiro-spring
1.4.0
なぜmavenはshiro-springという依存項目だけでよいのか、shiro-springはshiro-coreとshiro-webの2つのパケットに依存するため、shiro-coreとshiro-web、およびこの2つのパケットに依存する項目を自動的に継承します.
二、springに基づく配置方式
1、shiroフィルタの配置
shiroFilter
org.springframework.web.filter.DelegatingFilterProxy
targetFilterLifecycle
true
shiroFilter
/*
2、springに基づくshiro配置
注意事項:springはコンテキストをロードするとき、注釈をスキャンしていません.カスタムrealmではspringの注釈を使用しているので、shiroのカスタムrealmの前に注釈スキャンを行う必要があります.
(1)springでのshiro完全構成
/* = authc
/static/** =anon
/login/** = anon
/admin/** = authc,roles[admin]
/camera/** = authc
/** = authc
この構成を変更する必要があるのは
shiroフィルタとshiroセキュリティデータソース(realm).
フィルタには注釈がはっきりと書かれており、anonは匿名アクセスを表し、authcはログイン検証、権限検証、ロール検証が必要であることを示しています.
カスタムrealmインプリメンテーションは以下を参照してください.
(2)カスタムrealmセキュリティデータソース
public class MyRealm extends AuthorizingRealm{
Logger log=Logger.getLogger(MyRealm.class);
@Autowired
private UserService userService;// , , 、
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
log.info(" , doGetAuthenticationInfo principals , ");
UserInfo user = (UserInfo) principals.getPrimaryPrincipal();
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//
Collection roles = userService.findRoles(user);
log.info(" shiro , ");
info.addRoles(roles);
//
Collection permissions = userService.findPermissions(user);
log.info(" shiro ");
info.addStringPermissions(permissions);
return info;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)throws AuthenticationException{
log.info("shiro ");
// AuthenticationToken , shiro
String loginname= token.getPrincipal().toString();
// String , shiro , char[]
char[] password=(char[]) token.getCredentials();
//
UserInfo user =userService.queryUserInfoByLoginName(loginname);
log.info(" :"+loginname+","+user+" :"+password);
if (user != null&&user.getPassword()!=null) {
// shiro ,shiro
AuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user, password, getName());
return authenticationInfo;
}
return null;
}
三、shiroログインとログアウトプロセスの実現
/**
* shiro ,shiro session , session.invalidate();
*/
@Override
public void logout(){
Subject currentUser = SecurityUtils.getSubject();
currentUser.logout();
}
/**
* shiro
*/
@Override
public boolean singin(UserInfo user){
try{
Subject subject = SecurityUtils.getSubject() ;
UsernamePasswordToken token = new UsernamePasswordToken(user.getLoginusername(),user.getPassword()) ;
subject.login(token);
log.info("shiro ");
return true;
}catch(AuthenticationException e){
log.error("shiro ",e);
return false;
}
}
/**
* (shiro )
*/
@Override
public boolean isSignon() {
Subject subject = SecurityUtils.getSubject() ;
return subject.isAuthenticated();
}
/**
* shiro
*/
@Override
public UserInfo getCurrentUserInfo(){
Subject subject = SecurityUtils.getSubject() ;
return (UserInfo) subject.getPrincipal();
}
四、shiro配置使用総括
1、web.xmlでshiroを構成するフィルタ
2.springアプリケーションコンテキスト(例:applicationContext.xml)でshiroフィルタやカスタムrealmなどのその他の補助構成を構成する.
shiroフィルタは、ログイン検証、ロール検証、権限検証が必要なインタフェース、検証が不要なインタフェースを構成できます.カスタムrealmは、shiroベリファイアにユーザー情報、ユーザーロール情報、ユーザー権限情報などのデータソースを提供し、shiroに3つの検証をさせます.
3、shiroは完全なログインプロセスとログアウトプロセスを提供し、既存のログインとログアウトプロセスに対して一定の修正を行うことは避けられない.
以上、皆さんのお役に立てばと思います.--自分をしっかりしろ