今回は、ログイン機能を実現する方法をご紹介したいと思います。

メンバーTrn

 

 

 

 

 

項目属性のMemberLogin、MemberPasswordを使ってログイン機能を実現します。MemberPasswordは、IsPasswordプロパティをFalse→Trueにしておくと良いでしょう。(※1)

まずは、このMemberトランザクションにパターンWorkWithを適用します。『右クリック→ApplyPattern→WorkWith』と操作します。すると様々なオブジェクトが生成されます。

WW後のFM

 

 

 

 

 

 

 

 

今回、利用するのは、ContextManagementフォルダと、Securityフォルダです。まずは、Contextフォルダを編集していきます。

新規の構造体オブジェクト(SDT:StructuredDataType)を作成します。

MemberSDT

 

 

 

 

 

内容は上図のように編集します。

次に、ContextManagementフォルダのContextという名前のSDTを編集します。既存の項目属性を全て消去し、先ほど作成したMemberSDTを項目属性として加えます。

次は、マスターページを編集します。

AppMasterPage変数

 

 

変数にContextを加えます。そして、イベントを以下のように編集します。

AppMasterPageスタートイベント

 

 

 

 

上図の内容ですが、実は、ほとんどがWorkWithを適応した段階で自動生成されています。コメントアウトする作業でほとんど完了です。

続いて、Securityフォルダを編集していきます。WorkWithが自動生成したこのフォルダこそ、ログイン機能を実現する要素が詰め込まれていものです。まずは、IsAuthorizedというプロシージャを編集していきます。先ほどと同様にContextを変数に加えます。

IsAuthorizedソース

 

 

 

そして、上図のソースを加えます。

次に、NotAuthorizedというWebパネルの編集作業をします。これがログイン画面になる部分です。今回は、変数にContext、MemberLogin、MemberPasswordを加えます。(下図)

NotAuthorized変数

 

 

 

そして、WebFormは以下のようにします。

NA修正版

 

 

 

 

 

ログインボタンを設置しています。ボタンのプロパティとボタンをクリックした際のイベントコードは、それぞれ以下の図の通りです。

ボタンのプロパティ

 

 

 

ボタンイベント

 

 

 

 

 

これでほとんどログイン機能を実装できたと言えます。しかし、このままだと非ログイン状態の画面もログインによる制限がかかっている矛盾した状態になっています。その部分を修正していきますので、この状態で決して実行をしないで下さいますようお願いします。

非ログイン状態でのマスターページを作成します。AppMasterPageを名前を付けて保存します。(名前は任意)そのマスターページのイベントの内容と不必要なコントロールを全て削除して、下図のような状態にします。

AMPNA

 

 

 

 

 

 

このマスターページを非ログイン状態の部分に適応すれば完了です。つまり、NotAuthorizedWebパネルのMasterPageプロパティを今のマスターページに変更します。(デフォルトでは、AppMasterPageになっています)

これで完了です。長い駄文を最後までご覧頂きありがとうございます!

サンプルのナレッジベースを添付致しました。そちらで是非機能を試して頂きたく思います。(バージョン:GeneXus X EV1試用版)

しかし、DBにMember情報が入っていないと、当然ながらログインできず、新規のレコードも登録できません。そこで、KBの中に、SampleDataというプロシージャを入れてあります。サンプルのレコードをDBに挿入するプロセスを実行するものです。(※2)KBをインポートの上実行し、ログイン機能をお試し下さいませ。

<参考>

(※1)

・GeneXusTips「【GXTips】パスワードの目隠し入力」/http://www.corenext-genexus.com/【GXTips】パスワードの目隠し入力/

(※2)

・新入社員ブログ「プロシージャの有効活用!(第1回)」/http://www.corenext-genexus.com/プロシージャの有効活用!(第1回)/

・GeneXusTips「【GXTips】プロシージャを使ったサンプルデータの登録」/http://www.corenext-genexus.com/【GXTips】プロシージャを使ったサンプルデータの登録/