zoukankan      html  css  js  c++  java
  • Play Framework 完整实现一个APP(十一)

    添加权限控制

    1.导入Secure module,该模块提供了一个controllers.Secure控制器。

     /conf/application.conf

    # Import the secure module
    module.secure=${play.path}/modules/secure
    

      

    /conf/routes

    # Import Secure routes
    *       /                                       module:secure
    

      

    2.在Post Comment User Tag控制器上添加标签

    @With(Secure.class)
    public class Posts extends CRUD {    
    }

    启动Server,访问 localhost:9000/admin,如果页面报错(或编译失败),参考上一章添加CRUD模块

    3.添加权限控制

    创建权限控制器 /controllers/Security.java

    import models.*;
    
    public class Security extends Secure.Security {
        static boolean authenticate(String username, String password) {
            return User.connect(username, password) != null;
        }
    }

    通过 localhost:9000/logout 退出登录,使用正确的用户名密码进行登录

    4.添加登录页面

    创建Admin Controller

    @With(Secure.class)
    public class Admin extends Controller {
        @Before
        static void setConnectedUser() {
            if(Security.isConnected()) {
                User user = User.find("byEmail", Security.connected()).first();
                renderArgs.put("user", user.fullname);
            }
        }
        
        public static void index() {
            render();
        }
    }

    添加路由

    # Administration
    GET       /admin/?                                 Admin.index
    *         /admin                                   module:crud
    

      

    修改main.html

    <ul id="tools">
        <li>
            <a href="@{Admin.index()}">Log in to write something</a>
        </li>
    </ul>
    

      

    添加/views/admin.html

    <!DOCTYPE html>
    <html>
        <head>
            <title>Administration</title>		
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            #{get 'moreStyles' /}	
            <link rel="stylesheet" type="text/css" media="screen" 
                    href="@{'/public/stylesheets/main.css'}" />
            <link rel="shortcut icon" type="image/png" 
                    href="@{'/public/images/favicon.png'}" />
            <script src="@{'/public/javascripts/jquery-1.4.2.min.js'}"></script>
            <script src="@{'/public/javascripts/jquery.tools-1.2.5.toolbox.expose.min.js'}"></script>
        </head>
        <body id="admin">
            
            <div id="header">
                <div id="logo">
                    yabe. <span>administration</span>
                </div>
                <ul id="tools">
                    <li>
                        <a href="@{Secure.logout()}">Log out</a>
                    </li>
                </ul>
            </div>
            
            <div id="main">
                #{doLayout /} 
            </div>
            
            <p id="footer">
                Yabe is a (not so) powerful blog engine built with the 
                <a href="http://www.playframework.org">Play framework</a>
                as a tutorial application.
            </p>
            
        </body>
    </html>
    

      

    添加/views/Admin/index.html

    #{extends 'admin.html' /}
     
    Welcome ${user}!
    

      

    5.添加角色

    Security控制器重写check方法

    static boolean check(String profile) {
        if("admin".equals(profile)) {
            return User.find("byEmail", connected()).<User>first().isAdmin;
        }
        return false;
    }

    修改admin.html,显示用户是否有admin角色

    <div id="main">
        
        <ul id="adminMenu">
            <li class="${request.controller == 'Admin' ? 'selected' : ''}">
                <a href="@{Admin.index()}">My posts</a>
            </li>
            #{secure.check 'admin'}
                <li class="${request.controller == 'Posts' ? 'selected' : ''}">
                    <a href="@{Posts.list()}">Posts</a>
                </li>
                <li class="${request.controller == 'Tags' ? 'selected' : ''}">
                    <a href="@{Tags.list()}">Tags</a>
                </li>
                <li class="${request.controller == 'Comments' ? 'selected' : ''}">
                    <a href="@{Comments.list()}">Comments</a>
                </li>
                <li class="${request.controller == 'Users' ? 'selected' : ''}">
                    <a href="@{Users.list()}">Users</a>
                </li>
            #{/secure.check}
        </ul>
        
        #{doLayout /} 
    </div>
    

      

    在Post、Tag、User、Comment控制器上添加标签,只有admin role的User才能访问 http://localhost:9000/admin/{####}

    @Check("admin")
    @With(Secure.class)
    public class Posts extends CRUD {
    }

    。。

  • 相关阅读:
    JPA条件查询时间区间用LocalDateTime的问题
    Java常用的异常类型
    Android 通用流行框架
    html图标插件
    炫酷科技
    使用zxing生成二维码
    八款常见的Android游戏引擎
    opengl es中不同的绘制方式
    Xml序列化去掉命名空间,去掉申明
    win8 app GridView点击子项布局变更
  • 原文地址:https://www.cnblogs.com/alex09/p/4923145.html
Copyright © 2011-2022 走看看