Thứ Sáu, 12 tháng 11, 2010

Thực hành : ASP.NET MVC Forms Authentication With SqlMembershipProvider

Tiếp tục trong loạt bài : Kỹ thuật cho KaizenCMS, trong bài này tôi sẽ giải thích một số kỹ thuật liên quan đến việc sử dụng SqlMembershipProvider xây dựng cơ chế xác thực và bảo mật ứng dụng.


The ASP.NET MVC Website Template comes pre-configured to use SqlMembershipProvider which manages storage of membership information for an ASP.NET application in a SQL Server database.
But before you can use this properly you will need to setup your database, which will be very easy because Microsoft shipped .NET 2.0 with a nice utility to do it! You can find this on your computer, at this path C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe
1
Your database should have these tables:
2
Now lets tell our ASP.NET MVC Website’s configuration where to find this database. Open the web.config and change the ApplicationServices connection string to point to your SQL Server. You should now rebuild your solution to avoid any problems in the next step!
  1. <connectionStrings>  
  2.     <add name="ApplicationServices"  
  3.          connectionString="Data Source=localhost;  
  4.                            Initial Catalog=database;  
  5.                            Persist Security Info=True;  
  6.                            User ID=user;  
  7.                            Password=password"  
  8.          providerName="System.Data.SqlClient"  
  9.     />  
  10. </connectionStrings>  
It’s all good and nice but now we need Users in this database otherwise it’s completly useless! So open up your ASP.NET MVC Solution in Visual Studio and go to Project » ASP.NET Configuration. This will open the ASP.NET Web Application Administration website. In the Security tab you can Add/Manage Users and Roles. For the moment, add a user so we can try the login. I’ve added userMike.
3
You can now run your application and click on [ Log On ] at the top right corner of the page, this will redirect you the the logon form.
4
If you entered the correct credential you should be redirected to the home page of the site and you will see your name and a Log Off button instead of the Log On button.
5
Well congraticulations! You now have SqlMembershipProvider working on your website, wasn’t so hard, was it? Not  ingle line of code required! I’ll be posting again soon to show you how to use Roles in your applications

Tham khảo : http://helios.ca/2009/04/22/aspnet-mvc-sqlmembershipprovider/


Một số hàm thường dùng trong ASP Membership Provider

Tóm lượt từ các tutorial tại www.asp.net
Create User:
link gốc : http://www.asp.net/learn/security/tutorial-05-cs.aspx
MembershipCreateStatus createStatus;
MembershipUser newUser = Membership.CreateUser(Username.Text, Password.Text, Email.Text, passwordQuestion, SecurityAnswer.Text, true, out createStatus);
kiểm tra quá trình create user bằng creatStatus.
Kiểm tra quyền của user:
link : http://www.asp.net/learn/security/tutorial-08-cs.aspx
Get a reference to the currently logged on user
MembershipUser currentUser = Membership.GetUser();
Determine the currently logged on user's UserId value
Guid currentUserId = (Guid)currentUser.ProviderUserKey;
Kiểm tra Role của user hiện tại:
bool allow = (currentUser.IsInRole("Role cần kiểm tra"))
Tạm thời copy 2 em thường dùng nhưng cũng thường quên nhất :(

Tinh lua duyen trang. Quang Le _ Ngoc Ha

Thứ Ba, 9 tháng 11, 2010

Tasks

Dưới đây là các tính năng dự kiến của KaizenCMS

1. Hiển thị tài liệu theo định dạng chuẩn html
Với tính năng này, chúng ta hoàn toàn có thể soạn bài viết dưới các định dạng tài liệu khác như Word. Excel, ... Sau đó kết xuất các file này dưới dạng Html, đưa vào (upload) lên KaizenCMS và có thể hiển thị một cách bình thường, định dạng đẹp, chuẩn, bạn tự do sáng tạo cho định dạng tài liệu này.

Đặc tính kỹ thuật :
- Sử dụng IFrame cho lớp View
- Sử dụng một số JavaScript để biên dịch tài liệu

Tham khảo :
http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/worddocumentinaspnetmvc07222009071101AM/worddocumentinaspnetmvc.aspx

2. Upload tài liệu
Tính năng này là cần thiết cho KaizenCMS để nạp bài viết mới cho KaizenCMS. Tuy nhiên hiện tại tính năng này chưa hoàn chỉnh theo nghĩa :

- Cần có một database quản lý các file upload lên và có nguyên tắc ánh xạ để quản lý các file này

Đặc tính kỹ thuật :
- Sử dụng Ajax

Cơ sở dữ liệu

Bảng Object
- Id
- Name : Tên object
- Description  : Mô tả về object, có thể là lời nói đầu của KaizenCMS về tài liệu được đưa lên
- Path : Đường dẫn (địa chỉ) lưu object
- Views : Số lần xem
- Uploader : Người cập nhật, lấy họ tên của user name
- Authors : Tác giả (nếu có)


Tham khảo :
http://www.codeproject.com/KB/aspnet/ASPNetMVCDemo.aspx

3. Tích hợp http://ckeditor.com/
Tôi dự kiến sẽ tích hợp CKeditor để sử dụng cho phần description và comments cho các bài viết. Và sẽ hiển thị đầy đủ, đúng định dạng của các bài viết, comment này lên website.

Thứ Tư, 27 tháng 10, 2010

Tính năng 01 : Đăng tin bài


Hôm nay tôi cùng với các bạn xây dựng tính năng đầu tiên của KaizenCMS, tính năng : Đăng tin bài mới. Triết lý của tôi rất đơn giản, không cần phải viết từ đầu, nếu thiên hạ đã có những giải pháp miễn phí, không vướng mắc về bản quyền, thì nên tận dụng, nhưng tận dụng cái gì phải hiểu cái đó, hiểu sâu sắc để tránh các rủi ro không cần thiết.

1. Thế nào là đăng tin/bài ?
- Bạn muốn thông báo cho các học sinh lớp 12A5 ngày cuối tuần sẽ đi dã ngoại tại Hoài Hương - Bình Định, lúc đó bạn cần soạn một thông báo, gửi lên mạng cho mọi người đọc, đó là đưa tin bài.

2. Đưa tin/bài trong KaizenCMS
Bước 1 : Soạn tin/bài trong word, bạn tự do định dạng, thừa sức sáng tạo cho nội dung, ...
Bước 2 : Lưu tin/bài dưới định dạng html
Bước 3 : Upload tin/bài này lên KaizenCMS
Bước 4 : Chọn tin bài, chọn xuất bản, bài viết sẽ hiển thị

3. Cơ sở dữ liệu
Trước tiên chúng ta cần phải thiết kế một CSDL liệu nhỏ cho các tính năng hiện có đến thời điểm này. Cơ sở dữ liệu này được thiết kế như sau :


Bảng Folders
- Id : Duy nhất, khóa
- FolderName : Tên thư mục
- CreateBy : Người tạo thư mục
- CreateDate : Ngày tạo thư mục


Bảng Files
Lưu trữ danh sách các file được upload lên hệ thống, thông tin của mỗi một file như thế sẽ bao gồm :
- Id : (Khóa), sẽ là duy nhất
- FileName : (Tên file), là tên của file ban đầu upload lên
- FilePath : Đường dẫn lưu file
- UploadDate : (Ngày upload), là ngày đưa lên hệ thống
- Uploader : Người upload lên hệ thống.
- FileSize : Kích thước file, tính theo MB
- FileType : Định dạng file (doc, docx, ...)




Trước mắt chúng ta cần hai bảng này, sau này bổ sung thiết kế sau.





4. Tham khảo
Địa chỉ này dùng để tham khảo về cách sử dụng jquery và xây dựng giao diện cho phần upload, tương đối ổn, tuy nhiên cần phải chỉnh sửa lại một chút trong phần UploadController, bạn có thể xem thêm mã nguồn của dự án để thấy cách chỉnh sửa trên thực tế.

Chủ Nhật, 24 tháng 10, 2010

Phần 1 : Một số kỹ thuật & bài viết tham khảo chuẩn bị cho KaizenCMS

Tài liệu tham khảo

1. Opening a Word Document in ASP.Net MVC Application
Bài viết này sơ bộ giới thiệu cách đọc nội dung và định dạng hiển thị cho các file word trong các ứng dụng ASP.NET MVC. Tuy nhiên, tôi cho rằng tiêu đề này không thực sự phù hợp lắm và cần phải chỉnh lại tiêu đề là : "Nhúng tài liệu html vào ứng dụng ASP.NET MVC", bởi nội dung của nó xoay quanh việc hướng dẫn chuyển các file word sang html, sau đó đọc, xử lý và hiển thị nội dung của các file này. Bạn đọc có thể tham khảo chi tiết nội dung và mã nguồn thông qua địa chỉ sau :
Link : http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/worddocumentinaspnetmvc07222009071101AM/worddocumentinaspnetmvc.aspx

2. Galler Server Pro
GSP là một trong những dự án mã nguồn mở thú vị nhất trên nền tảng công nghệ của Microsoft.

Link : http://www.galleryserverpro.com/open-source-photo-and-video-web-gallery.aspx

1. Chọn lựa trình soạn thảo nội dung : FCKeditor.NET
FCKeditor.NET, là một trong những trình soạn thảo nội dung phổ biến nhất cho các dự án CMS, bản thân FCKeditor.NET là một dự án mã nguồn mở, nên nó rất được ưa chuộng.


2. Hiển thị mã HTML


HtmlHelper






3. Một số tham số cần cấu hình web.config cho các dự án CMS


<httpRuntime requestValidationMode="2.0" />



Giới thiệu dự án KaizenCMS

1. MỞ ĐẦU
Kaizen được ghép từ hai từ tiếng Nhật: Kai - "Thay đổi” và Zen - "Tốt hơn", nghĩa là "Thay đổi để tốt hơn" hoặc "Cải tiến liên tục". Kaizen là một trong những từ khóa tôi rất yêu thích, bởi nó ngắn gọn, xúc tích và hàm chứa cả một triết lý về khoa học quản lý mà tôi đang cố áp dụng tại BIDC - Ngân hàng Đầu tư và Phát triển Campuchia, nhằm xây dựng một hệ thống CNTT đủ thông minh, đủ linh hoạt để phục vụ yêu cầu kinh doanh trong thời đại mới - Thời đại của kinh tế trí thức.
KaizenCMS là dự án mã nguồn mở, hướng tới việc xây dựng một Hệ quản trị nội dung toàn diện, dựa trên nền tảng công nghệ của Microsoft, bao gồm ASP.NET MVC, SQL Server 2008, ... Tên của dự án, KaizenCMS là một cách chơi chữ nhằm ghép nối hai cụm từ KaizenCMS nhằm nhắc nhở chúng ta phải liên tục nghiên cứu, cải tiến dự án để từng bước xây nên một giải pháp CMS xứng tầm cho người Việt.

2. NGỮ CẢNH ỨNG DỤNG CỦA KaizenCMS
Dự án KaizenCMS này trước tiên dựa trên những yêu cầu thực tế trong công tác nghiên cứu và ứng dụng CNTT nhằm đẩy mạnh quá trình Tin học hóa cho BIDC - Ngân hàng Đầu tư và Phát triển Campuchia. Do đó cách đơn giản để hiểu được KaizenCMS là gì, tại sao phải sử dụng nó, sử dụng nó có lợi ích gì, ... chúng ta nên xem xét KaizenCMS trong ngữ cảnh ứng dụng của một Ngân hàng.

2.1. Các yêu cầu từ BIDC
Tôi đang đảm nhiệm vai trò của một IT Manager, hay nói một cách khác tôi chính là một CIO của Ngân hàng (BIDC). BIDC là đơn vị mới thành lập, tuổi đời chưa quá một, nền tảng công nghệ bắt đầu từ con số 0, nhân sự tản mác tuyển dụng từ khắp nơi, không ổn định và chưa xây dựng được nền tảng các mối quan hệ và cơ sở truyền thông nội bộ.

Quản lý tri thức
Tôi muốn tập trung tri thức của BIDC lại, xây dựng nó thành một cơ sở dữ liệu tri thức, phục vụ nhu cầu nghiên cứu, đào tạo nội bộ, ...

3. KaizenCMS 1.0
Tại phiên bản đầu tiên, tôi dự định ban đầu KaizenCMS chỉ cần có các tính năng chính sau đây :
3.1. Nền tảng công nghệ
- Microsoft .NET Framework 4.0
- Microsoft Visual Studio 2010
- ASP.NET MVC 2.0
- Microsoft SQL Server 2008
- Design Patterns (GoF)
- Tier Architectures
- CSS
3.2. Thiết kế Cơ sở dữ liệu
- Membership & Roles
- Database module : Customers
- Database module : Contents
- Database module : Files

3.3. Module
- Web services
- Rss
- Email

4. Tính năng
4.1. Soạn thảo và đăng tin/bài mới
Trước tiên, tri thức số sẵn có thường được lưu trữ dưới dạng file, có thể là các file với định dạng thông dụng từ Microsoft Office, pdf, zip, video, html, ... Do đó mục tiêu đầu tiên là cần phải tổ chức : (1) Thu thập, (2) Xử lý, (3) Lưu trữ, (4) Trình bày các dạng file/tài liệu này một cách thống nhất, thân thiện với người dùng, ...

4.2. Chỉnh sửa, cập nhật tin/bài cũ


4.3. Xóa tin/bài

4.4. Xuất bản tin/bài

4.5. Phân loại tin/bài


4.6. Đăng ký nhận tin/bài qua email
Chiến lược của tôi là hội tụ công nghệ xung quanh mỗi cá nhân, triết lý này có thể diễn giải bình dân hơn : "Có gì mới báo tôi ngay". Tính năng Đăng ký nhận tin/bài qua email cũng là một trong những tính năng quan trọng nhằm phục vụ mục tiêu này.

4.7. Upload files : doc, docx, xls, xlsx, zip, rar, video, ...


4.8. Download files


4.9. Chỉnh sửa thông tin files

5. Quản lý mã nguồn
Sử dụng codeplex.com