CodeZineで連載中の「ASP.NET Identity入門」の第9回が公開されました。
外部アカウントを使ったログインをASP.NET Identityで実現する
Twitterのアカウントを使ったログイン方法について解説しています。
CodeZineで連載中の「ASP.NET Identity入門」の第9回が公開されました。
外部アカウントを使ったログインをASP.NET Identityで実現する
Twitterのアカウントを使ったログイン方法について解説しています。
CodeZineで連載中の「ASP.NET Identity入門」の第8回が公開されました。
ASP.NET Identity 2.0の新機能 ~二要素認証
メール連携機能の3つ目として二要素認証(Two factor authentication)を取り上げています。
この記事はASP.NET Advent Calendar 2014 – Qiitaへの参加エントリです。
昨日は@normalianさんの「Java API for JSON Processing(JSR 353) を利用してASP.NET と疎通してみる – 割と普通なブログ」でした。
さて、皆様24時間降雪量が1mを超えた中、いかがお過ごしでしょうか。私は雪を掘って掘って掘りまくっておりました。今朝は6時を過ぎても除雪車が来ていませんでした。お陰で5時半、7時過ぎと朝から2度の雪掘りです。なお、昨日は昨日でお風呂70杯分くらいの雪をスノーダンプで除雪しました。雪はホントいやです。
そんな豪雪の新潟において先週土曜日、アツいイベントが開催されました。
NDS#39 Niigata.pm tech talk – connpass
要はPerlなイベントなのですが、そこに完全アウェイでしたが、私もOWINで一席ぶってきました。
今回デモで使ったソースコードは以下にアップしています。
内容はスライドを見ていただくとして、この発表で得た知見をつらつらと。
そして、ASP.NET 5でOwin.dllが使われていないことからOWINの今後が気になるところですが、ASP.NET 5自体がOWIN実装しており(Microsoft.AspNet.Http名前空間等)、ASP.MVCやSignalR等もその仕組の上に乗っています。したがって、OWINで得た知見はASP.NET 5でも決して無駄にはならないでしょう。
というわけで、(強引に)まとめると
The Owin.dll is dead!? Long live the OWIN!!!
というのが今回の結論でした!
次は@_iwateさんの「ASP.NETプロジェクトからDBコンテキストを切り離してマイグレーションする。 – Qaramell Blog」です。
CodeZineで連載中の「ASP.NET Identity入門」の第7回が公開されました。
ASP.NET Identity 2.0の新機能 ~パスワードのリセット
メール連携機能の2つ目としてパスワードのリセット機能を取り上げています。
CodeZineで連載中の「ASP.NET Identity入門」の第6回が公開されました。
ASP.NET Identity 2.0の新機能 ~メールを使ったアカウントの確認
前回に続いて、アカウントの確認の解説の完結編です。メールで何かしらの情報を送るのは大体同じ形なので、まずはアカウントの確認をしっかりと押さえておくとよいと思います。
CodeZineで連載中の「ASP.NET Identity入門」の第5回が公開されました。
ASP.NET Identity 2.0の新機能 ~メール連携機能のためのメール送信処理
今回から数回にわたって、ASP.NET Identity 2.0で追加されたメール連携機能を取り扱います。初回の今回はメール連携のための下準備と、「アカウントの確認」処理の中でメールを送信するところまで紹介しています。
なお、実は今回の記事、書き上げたと思ったタイミングでASP.NET Identity 2.1とVS2013 Update3がリリースされて、サンプルを新テンプレートで作り直したりと結構苦労しましたf(^^;
すっかりここに書くのを忘れていましたが、CodeZineで連載中のASP.NET Identity入門の第2回から第4回までが公開されています。
連載はまだまだ続きますので、今後の記事にもご期待ください。
Microsoftがやってくれました!!!
aspnet/Home https://github.com/aspnet/Home
ASP.NET vNext Home
In the next version of ASP.NET we are working with multiple teams around Microsoft to create a lean, composable .NET stack that provides a familiar and modern framework for web and cloud scenarios.
ソース公開を心待ちにしていた、「ASP.NET Identity」もその中には含まれていたので、時間をとって中身を見てみようと思います。
aspnet/Identity https://github.com/aspnet/Identity
「ASP.NET Identity」の登場背景と実際の使い方 (1/4):CodeZine http://codezine.jp/article/detail/7709
公開されました。
今後中身の動作に入っていきます。
#先日Identity 2.0がでて焦ってたりf(^^;
このエントリは「One ASP.NET Advent Calendar 2013 – Adventar」の参加エントリです。
前日は@NAL_6295さんの「NAL-6295の舌先三寸 » Blog Archive » [ASP.NET MVC][C#]Controllerで複数のcheckboxの状態を個々のチェック状態のBooleanではなく、チェックされているものだけの配列を引数で受け取りたい」でした。
ASP.NET WebFormsでも、シュッとしたURLを簡単に扱うためのライブラリです。
The ASP.NET Friendly URLs library makes it easy to enable extensionless URLs for file-based handlers (e.g. ASPX, ASHX) in ASP.NET applications.
乱暴にまとめると次のような機能を提供してくれます。
まずは空のWebアプリケーションプロジェクトを作成しましょう。
「One ASP.NET」なので、「Web Forms」にチェックを入れ、「Empty」テンプレートを選択します。
次にNuGetからFriendlyURLsを追加します。
NuGet Gallery | Microsoft.AspNet.FriendlyUrls 1.0.2
FriendlyURLsを有効にするには、Global.asaxのApplication.Startイベントハンドラーにて、RouteConfigクラスの拡張メソッド、「EnableFriendlyUrls()」を実行します。
そして、そのための処理はNuGetで追加されたApp_Start/RouteConfigクラスのRegisterRoutesメソッドを使います。
using System; | |
using System.Collections.Generic; | |
using System.Web; | |
using System.Web.Routing; | |
using Microsoft.AspNet.FriendlyUrls; | |
namespace FriendlyURLsSample | |
{ | |
public static class RouteConfig | |
{ | |
public static void RegisterRoutes(RouteCollection routes) | |
{ | |
var settings = new FriendlyUrlSettings(); | |
settings.AutoRedirectMode = RedirectMode.Permanent; | |
routes.EnableFriendlyUrls(settings); | |
} | |
} | |
} |
using System; | |
using System.Web.Routing; | |
namespace FriendlyURLsSample | |
{ | |
public class Global : System.Web.HttpApplication | |
{ | |
protected void Application_Start(object sender, EventArgs e) | |
{ | |
RouteConfig.RegisterRoutes(RouteTable.Routes); // <- FriendlyURLsを有効に | |
} | |
} | |
} |
遷移元画面として、Default.aspxを作成します。テキストボックスとボタンがそれぞれ一つずつある、シンプルな画面です。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="FriendlyURLsSample.Default" %> | |
<!DOCTYPE html> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head runat="server"> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
<title>Greeting!</title> | |
</head> | |
<body> | |
<form id="form1" runat="server"> | |
<div> | |
Enter your name: | |
<asp:TextBox ID="Name" runat="server"></asp:TextBox> | |
<asp:Button ID="Greet" runat="server" Text="Greet" OnClick="Greet_Click" /> | |
</div> | |
</form> | |
</body> | |
</html> |
using System; | |
using Microsoft.AspNet.FriendlyUrls; | |
namespace FriendlyURLsSample | |
{ | |
public partial class Default : System.Web.UI.Page | |
{ | |
protected void Greet_Click(object sender, EventArgs e) | |
{ | |
Response.Redirect(FriendlyUrl.Href("~/Greeting", Name.Text)); | |
} | |
} | |
} |
ポイントは、FriendlyUrl.Hrefメソッドです。このメソッドの第一引数に遷移先ページのURL(拡張子なし)、第二引数以降に「セグメント」として引き渡したいパラメーターを設定します。
「セグメント」については後述します。
遷移先画面として、Greeting.aspxを作成します。前の画面で入力した名前を使って、あいさつ文を表示するシンプルな画面です。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Greeting.aspx.cs" Inherits="FriendlyURLsSample.Greeting" %> | |
<!DOCTYPE html> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head runat="server"> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
<title>Greeting!</title> | |
</head> | |
<body> | |
<form id="form1" runat="server"> | |
<div> | |
Hello! <%: Name %> | |
</div> | |
</form> | |
</body> | |
</html> |
using System; | |
using System.Linq; | |
using Microsoft.AspNet.FriendlyUrls; | |
namespace FriendlyURLsSample | |
{ | |
public partial class Greeting : System.Web.UI.Page | |
{ | |
public string Name { get; private set; } | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
Name = FriendlyUrl.Segments.First(); | |
} | |
} | |
} |
この画面のポイントは、FriendlyUrl.Segmentsプロパティです。前の画面のHrefメソッドで「セグメント」に指定したパラメーターが、IList<string>型で格納されています。
今回は前の画面で入力した名前だけが欲しいので、LINQのFirstメソッドで1つだけ取得しています。
では実行してみましょう。まず起動すると、名前を入力する画面が開きます。
名前を入力して「Greet」ボタンをクリックすると、次の画面に遷移し、入力した名前を使ってあいさつ文が表示されます。
さて、アドレスバーを見てみましょう。次のアドレスとなっています。
http://localhost:3622/Greeting/TAKANO%20Sho
Friendly URLsの力により、”~Greeting”まででGreeting.aspx画面が表示され、その後の”/”で区切られた値がセグメントとして扱われます。FriendlyUrl.Hrefメソッドで入力した名前をセグメントに指定しているので、入力した”TAKANO Sho”がちゃんとURLエンコードされ、”TAKANO%20Sho”として設定されていることがわかります。
そして、Greeting画面では、Page_Loadイベントハンドらーにて、FriendlyUrl.Segmentsプロパティを使い、上記の”TAKANO%20Sho”というセグメントの値を、URLデコードして、”TAKANO Sho”として扱えていることが確認できます。
ASP.NET 4.5で導入されたモデルバインドと組み合わせるための属性が使えたり、モバイルサイト用のページに自動でルーティングしたりといった機能があるようです。前者については、「ASP.NET スキャフォールディング」の中で使われていますので、以下の拙著記事を見てみてください。後者については良く調べていないので、前述のCodePlexのプロジェクトホームを参照してください。
ASP.NET 4.5の「Scaffolding(スキャフォールディング)」機能を試す(前編)(1/5):CodeZine
ASP.NET 4.5の「Scaffolding(スキャフォールディング)」機能を試す(後編)(1/4):CodeZine
CodeZineの記事では、もう少し詳しくFriendly URLsの動作を解説していますので、ぜひご覧ください。
なお、今回作成したサンプルは、GitHubにアップしてあります。
masaru-b-cl/one-asp-net-advent-calendar-2013
@taiga_takahariさんにバトンタッチです!